カテゴリ: PHP 更新日: 2026/02/26

PHP のクラス(class)とオブジェクトの基本

PHP のクラス(class)とオブジェクトの基本
PHP のクラス(class)とオブジェクトの基本

新人と先輩の会話形式で理解しよう

新人

「PHPでクラスやオブジェクトってよく聞くけど、どういう意味なんですか?」

先輩

「クラスは、PHPでオブジェクト指向を実現するための設計図のようなものだよ。そして、オブジェクトはその設計図を元に実際に作られたものだ。」

新人

「設計図って言われても、少し分かりにくいですね。」

先輩

「では、具体的にクラスとオブジェクトについて、基本から説明していこう。」

-

1. PHPのクラス(class)とは?(基本的な説明)

1. PHPのクラス(class)とは?(基本的な説明)
1. PHPのクラス(class)とは?(基本的な説明)

PHPのクラスとは、一言で言うと「オブジェクト指向プログラミングの設計図」のことです。プログラミング未経験の方には、「たい焼きの型」や「料理のレシピ」をイメージすると分かりやすいでしょう。

クラスの中には、データ(状態)を保存するための「プロパティ(変数)」と、何らかの処理を行う「メソッド(関数)」という2つの要素をひとまとめにして定義します。これにより、複雑なプログラムも「モノ(オブジェクト)」として整理して扱えるようになります。

未経験者向けの例え話:
例えば「車」を作る場合、設計図(クラス)には「色」や「車種名」というデータ項目と、「走る」「止まる」という動かし方が書かれています。この設計図があるおかげで、同じ仕様の車を何台でも効率よく作ることができるのです。

それでは、実際にPHPで最もシンプルな「車」のクラスを作成してみましょう。以下のコードは、クラスの基本的な書き方のルールを示しています。


// 「Car」という名前の設計図(クラス)を定義する
class Car {
    // プロパティ:車が持つデータ(変数の前にpublicなどをつけるのがルール)
    public $color; // 車の色
    public $model; // 車種名

    // メソッド:車ができること(関数)
    public function startEngine() {
        echo "エンジンがスタートしました!";
    }
}

上記のコードでは、Carという名前のクラスを定義しました。この中には、車の情報を保持する2つのプロパティ($color$model)と、画面にメッセージを表示するstartEngine()というメソッドが含まれています。

このように、関連するデータと機能を一つのパッケージ(クラス)にまとめることが、PHPのオブジェクト指向における第一歩となります。この設計図をどのようにして「本物の車(オブジェクト)」として動かすのかについては、次の章で詳しく解説します。

2. PHPのオブジェクトとは?(クラスとオブジェクトの関係)

2. PHPのオブジェクトとは?(クラスとオブジェクトの関係)
2. PHPのオブジェクトとは?(クラスとオブジェクトの関係)

オブジェクトは、クラスを元に実際に作られた「インスタンス」です。クラスは設計図、オブジェクトはその設計図を基に作られた実際の車のようなものです。

先ほどの「車」のクラスを使って、実際のオブジェクトを作ってみましょう。


$myCar = new Car();
$myCar->color = "赤";
$myCar->model = "トヨタ";
$myCar->startEngine();

上記のコードでは、$myCarというオブジェクトを作成し、色とモデルを設定しています。そして、startEngine()メソッドを呼び出すと、エンジンが始動するメッセージが表示されます。

クラスは設計図、オブジェクトはその設計図をもとに作られた実際のものという関係です。

3. クラスのプロパティとメソッド(データと機能)

3. クラスのプロパティとメソッド(データと機能)
3. クラスのプロパティとメソッド(データと機能)

クラス内では、データ(プロパティ)と機能(メソッド)を定義することができます。プロパティはオブジェクトが持つデータを表し、メソッドはそのデータに対して行う操作を表します。

先ほどの車のクラスにおいて、プロパティは$color$modelでした。そして、startEngine()はその車を動かすためのメソッドです。プロパティは、クラスがインスタンス化されてオブジェクトになると、それぞれのオブジェクトに値を持つことができます。


class Car {
    public $color;
    public $model;

    public function startEngine() {
        echo "エンジンがスタートしました!";
    }

    public function stopEngine() {
        echo "エンジンが停止しました!";
    }
}

この例では、新たにstopEngine()メソッドを追加しました。車が動くだけでなく、停止もできるようになっています。

プロパティは車の色やモデルの情報を持ち、メソッドは車を動かす機能を提供します。こうした組み合わせが、クラスでオブジェクトを作成する際の基本となります。

4. オブジェクトの作成方法(インスタンス化)

4. オブジェクトの作成方法(インスタンス化)
4. オブジェクトの作成方法(インスタンス化)

オブジェクトは、クラスを「インスタンス化」することによって作成されます。インスタンス化とは、クラスを元に実際のオブジェクトを生成することです。

インスタンス化は、newキーワードを使って行います。例えば、$myCar = new Car();というコードが、クラスCarのインスタンスを作成する方法です。

作成したオブジェクトには、そのクラスで定義したプロパティやメソッドを使用することができます。以下のコードで、クラスCarから作ったオブジェクト$myCarにプロパティとメソッドを設定します。


$myCar = new Car();
$myCar->color = "青";
$myCar->model = "ホンダ";
$myCar->startEngine();
$myCar->stopEngine();

このコードでは、$myCarというオブジェクトを作り、色とモデルを設定し、その後、エンジンを始動させ、停止させています。

このように、オブジェクトはnewを使ってインスタンス化した後、そのプロパティやメソッドにアクセスして操作を行います。

-

5. クラス内でのデータの扱い方(アクセス修飾子)

5. クラス内でのデータの扱い方(アクセス修飾子)
5. クラス内でのデータの扱い方(アクセス修飾子)

クラス内のプロパティやメソッドには、アクセス修飾子を使ってその公開範囲を制限することができます。アクセス修飾子には、主に以下の3つがあります。

  • public: クラス外からもアクセス可能です。
  • protected: クラス内やそのクラスを継承したクラスからアクセス可能です。
  • private: クラス内からのみアクセス可能です。

例えば、クラスのプロパティ$colorprivateにすると、そのプロパティはクラスの外からは直接アクセスできなくなります。このようにすることで、データを守ることができます。


class Car {
    private $color;
    public $model;

    public function setColor($color) {
        $this->color = $color;
    }

    public function getColor() {
        return $this->color;
    }
}

このコードでは、$colorプロパティをprivateにして、setColor()メソッドとgetColor()メソッドでアクセスしています。これにより、色を設定したり取得したりする際に、外部から直接プロパティにアクセスできないように保護しています。

アクセス修飾子を適切に使うことで、クラス内のデータの管理がより安全になります。

6. PHPのクラスとオブジェクトの使い方の例(簡単な実装例)

6. PHPのクラスとオブジェクトの使い方の例(簡単な実装例)
6. PHPのクラスとオブジェクトの使い方の例(簡単な実装例)

クラスとオブジェクトを使う具体的な例として、簡単な「銀行口座」クラスを作成してみましょう。このクラスでは、口座番号、名前、残高を管理し、預金や引き出しの操作を行います。


class BankAccount {
    private $accountNumber;
    private $accountHolder;
    private $balance;

    public function __construct($accountNumber, $accountHolder, $balance) {
        $this->accountNumber = $accountNumber;
        $this->accountHolder = $accountHolder;
        $this->balance = $balance;
    }

    public function deposit($amount) {
        if ($amount > 0) {
            $this->balance += $amount;
            echo "預金が成功しました。現在の残高は" . $this->balance . "円です。";
        } else {
            echo "預金額は正の数でなければなりません。";
        }
    }

    public function withdraw($amount) {
        if ($amount > 0 && $amount <= $this->balance) {
            $this->balance -= $amount;
            echo "引き出しが成功しました。現在の残高は" . $this->balance . "円です。";
        } else {
            echo "引き出し額が無効です。残高を確認してください。";
        }
    }

    public function getBalance() {
        return $this->balance;
    }
}

このコードでは、BankAccountというクラスを作成し、口座の預金(deposit())や引き出し(withdraw())を管理するメソッドを定義しています。

クラスをインスタンス化することで、実際に銀行口座を作成し、操作を行うことができます。次に、このクラスを使って実際に操作してみましょう。


$account = new BankAccount("123-456", "山田太郎", 10000);
$account->deposit(5000);
$account->withdraw(3000);
echo "最終的な残高: " . $account->getBalance() . "円";

上記のコードでは、BankAccountクラスをインスタンス化し、預金と引き出しを行っています。残高を取得するために、getBalance()メソッドを使っています。

このように、クラスとオブジェクトを使うことで、関連するデータや機能を一つにまとめて効率的に操作することができます。

7. クラスを使うメリット(再利用性、コードの整理など)

7. クラスを使うメリット(再利用性、コードの整理など)
7. クラスを使うメリット(再利用性、コードの整理など)

クラスを使うことで、コードをより整理し、再利用可能にすることができます。以下のようなメリットがあります。

  • 再利用性: クラスは一度作成すれば、何度でもインスタンス化して使うことができ、同じコードを繰り返し書く必要がありません。
  • 保守性: クラス内で変更があった場合、そのクラスだけを修正すれば済むため、コードの保守が容易です。
  • 整理整頓: クラスはデータと機能を一つにまとめて整理することができ、コード全体の見通しが良くなります。

例えば、先ほどの銀行口座の例では、預金や引き出しの操作を管理するクラスを使うことで、複数の場所で同じ操作を繰り返す必要がなくなります。また、口座番号や残高などの情報もクラス内で整理され、他の場所で使う際にはインスタンス化して操作するだけで済みます。

このように、クラスを使うことでコードの整理が進み、保守性が向上するだけでなく、開発が効率的になります。

8. 初心者におすすめのPHPクラス学習方法

8. 初心者におすすめのPHPクラス学習方法
8. 初心者におすすめのPHPクラス学習方法

PHPでクラスを学ぶ際には、以下のステップを踏むことをおすすめします。

  • 基本を理解する: まずは、クラスの定義方法、プロパティとメソッドの使い方、インスタンス化の仕方を理解しましょう。
  • 簡単なクラスを作る: 初めてのクラスは、実生活に関連するもの(例えば、銀行口座や学生など)を作成して、クラスを使う実感を得ましょう。
  • アクセス修飾子やコンストラクタを学ぶ: クラス内のデータのアクセス方法や、インスタンス化時に初期化を行うコンストラクタを学ぶことで、より高度なクラスを作成できるようになります。
  • 継承を学ぶ: 他のクラスから機能を引き継ぐ「継承」の概念を学ぶことで、コードの再利用性がさらに向上します。
  • 練習問題を解く: クラスを使った練習問題を解いて、実践的なスキルを磨きましょう。

PHPのクラスは、少し理解が難しく感じるかもしれませんが、基本をしっかりと学び、実際に手を動かしてコードを書いていくうちに、自然と理解できるようになります。

学習を進める中で、PHPのクラスの強力な機能を活用できるようになれば、より効率的で整理されたコードを書くことができ、開発が楽になります。

まとめ

まとめ
まとめ

PHPのクラスとオブジェクトは、オブジェクト指向プログラミングの基本的な考え方であり、開発をより効率的かつ柔軟にするために欠かせない重要な機能です。この記事では、クラスの定義、オブジェクトの生成、プロパティとメソッドの使い方、アクセス修飾子によるデータの制御、そして現実的な銀行口座クラスの実装例まで、PHPにおけるクラスとオブジェクトの使い方を段階的に解説しました。

クラスはあらゆるデータや機能を「ひとつのまとまり」として整理できる構造であり、コードの再利用性や保守性を高める上で大きな役割を果たします。プロパティは「状態(データ)」を、メソッドは「動作(処理)」を表現し、それぞれのオブジェクトごとに値や振る舞いを持たせることが可能です。

PHPのクラスでは、コンストラクタを使ってオブジェクト生成時に初期値を設定することも重要です。__construct()という特別なメソッドを使うことで、オブジェクトを作成したときに自動的に処理を実行できます。 また、gettersetterを活用することで、クラスの外部からプロパティに安全にアクセスしたり変更したりできます。

クラスのメソッド内で$thisというキーワードを使うと、そのオブジェクト自身を指すことができます。これにより、同じオブジェクト内のプロパティやメソッドにアクセスできるようになります。

さらに、PHPのクラスでは静的メソッド(static)という考え方もあります。これは、インスタンス化せずにクラスから直接呼び出せるメソッドです。例えば、共通処理や定数値の取得に使われます。

実際の開発現場では、PHPのクラスを活用することで、MVCモデルのコントローラやモデルを定義したり、データベースとのやり取りを分離した設計ができるようになります。こうした技術は、LaravelやCakePHPなどのフレームワークでも応用されており、クラス設計の理解はPHP開発の基盤となるスキルです。

例えば、オンラインショップを構築する場合、「商品」クラス、「ユーザー」クラス、「注文」クラスなどを作成することで、役割ごとに機能を分け、保守性や再利用性を高めることができます。 商品名や価格といった情報は「商品」クラスのプロパティに、カートに追加する機能は「ユーザー」クラスのメソッドに、注文履歴の記録は「注文」クラスで処理することで、ロジックを整理することができます。

さらに、クラス同士を組み合わせて使う「コンポジション(合成)」の概念を知っておくと、より柔軟な設計が可能になります。 たとえば、ユーザーが複数の注文を持つという構造では、「ユーザー」クラスが「注文」クラスの配列を持つような構成にすることで、実世界の関係性をプログラムに自然に落とし込むことができます。

PHPではクラスを使って例外処理クラスやユーティリティクラスを作ることも一般的です。これにより、システム全体の一貫性を保ちつつ、エラー処理や共通処理を効率化できます。

最後に、オブジェクト指向を学ぶ際は、実際のコードを書いて試すことが一番の近道です。短いクラスでも良いので、自分の手で設計して、動かして、失敗して、直していく経験が、スキルの定着につながります。

実践例:簡単な「商品」クラスの構造

以下は、商品名と価格を管理し、税込価格を計算するシンプルなPHPクラスです。


class Product {
    private $name;
    private $price;

    public function __construct($name, $price) {
        $this->name = $name;
        $this->price = $price;
    }

    public function getPriceWithTax() {
        return $this->price * 1.1;
    }

    public function getInfo() {
        return $this->name . "(税込価格: " . $this->getPriceWithTax() . "円)";
    }
}

$product = new Product("マグカップ", 1500);
echo $product->getInfo();

このように、PHPのクラスをうまく使うことで、状態と振る舞いを持った部品化されたコードを書くことができ、開発効率が向上します。小さな構造から始めて、徐々に自分なりの設計に挑戦していきましょう。

先生と生徒の振り返り会話

生徒

「クラスとオブジェクトの関係がやっと分かってきました。最初は設計図とかインスタンスとか難しく感じましたけど、実際にコードを書いてみるとイメージしやすくなりました。」

先生

「その調子です!現実の物に置き換えて考えると、プログラムの設計もわかりやすくなります。次は、継承やオーバーライドにもチャレンジしてみると、より高度な設計ができるようになりますよ。」

生徒

「やってみます!あと、privategettersetterを使ってデータを守る仕組みも実感できました。」

先生

「うん、そうした意識は実際の開発現場でもとても大事です。クラスの設計力は今後の成長に直結しますよ。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

PHPのクラスとオブジェクトの違いがよくわかりません。何がどう違うのですか?

PHPのクラスは設計図のようなもので、オブジェクトはそのクラスを元に実体化されたものです。つまり、クラスは雛形、オブジェクトは具体的な中身を持つ実体と理解するとよいでしょう。

PHPでオブジェクトを作成するにはどうすればいいですか?

PHPでオブジェクトを作るには、クラスを定義したうえでnewキーワードを使ってインスタンス化します。作ったオブジェクトにはプロパティやメソッドを使ってアクセスできます。
コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
New1
Python
Pythonの変数スコープとは?初心者でもわかるローカル変数とグローバル変数の違い
New2
Python
PythonのNoneとは?NoneTypeの使い方とnullとの違いをわかりやすく解説
New3
Python
Pythonで文字列の長さを取得する方法!len()の基本と応用
New4
PHP
PHP のインストール方法(Windows・Mac・Linux)と開発環境
-
人気記事
No.1
Java&Spring記事人気No1
PHP
PHPでREST APIを作る方法を完全ガイド!初心者でもわかるAPI開発入門
No.2
Java&Spring記事人気No2
Python
Pythonでファイルの更新日やサイズを取得する方法!初心者でもわかるos.stat()の使い方
No.3
Java&Spring記事人気No3
Python
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.4
Java&Spring記事人気No4
Python
Pythonの書き方を基本から解説!はじめてのPythonプログラム
No.5
Java&Spring記事人気No5
PHP
PHP のインストール方法(Windows・Mac・Linux)と開発環境
No.6
Java&Spring記事人気No6
PHP
初心者向けにPHP でファイルを開く・読み込む・書き込む方法(fopen, fwrite, fread)を解説する記事
No.7
Java&Spring記事人気No7
Python
Pythonのコンストラクタ(__init__)の使い方を解説!初心者でもわかるオブジェクトの初期化
No.8
Java&Spring記事人気No8
PHP
PHP の可変変数と変数の参照渡しを完全解説!初心者でも理解できる動的変数の使い方
-
-