カテゴリ: PHP 更新日: 2025/11/26

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

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

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

新人

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

先輩

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

新人

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

先輩

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

-

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

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

PHPのクラスとは、オブジェクト指向プログラミングを行うための「設計図」のようなものです。クラスは、変数や関数をまとめたものです。変数は「プロパティ」、関数は「メソッド」と呼ばれ、クラス内で使います。

例えば、「車」というクラスを作ったとしましょう。このクラスには、車の色やモデル名、速度などの情報(プロパティ)と、車を走らせるための関数(メソッド)が含まれます。


class Car {
    public $color;
    public $model;

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

上記のコードでは、Carというクラスを定義しました。このクラスには、車の色やモデルを保存するためのプロパティ($color$model)と、エンジンを始動するメソッド(startEngine())があります。

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のクラスは設計図のようなもので、オブジェクトはそのクラスを元に実体化されたものです。つまり、クラスは雛形、オブジェクトは具体的な中身を持つ実体と理解するとよいでしょう。
コメント
コメント投稿は、ログインしてください

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

カテゴリの一覧へ
新着記事
New1
PHP
PHP のフォームデータの受け取り($_POST, $_GET)を完全解説!初心者向けガイド
New2
PHP
PHPのスコープとは?グローバル・ローカル・スーパーグローバルを完全解説!
New3
PHP
PHPの演算子をやさしく解説!算術・比較・論理・ビット演算子の使い方
New4
PHP
PHP の変数とは?基本的な使い方とデータ型を徹底解説!
-
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonで辞書のキー・値・アイテムを取得する方法(keys(), values())
No.2
Java&Spring記事人気No2
Python
Pythonでエラースタックトレースを表示・取得する方法を徹底解説!初心者向け例外処理入門
No.3
Java&Spring記事人気No3
Python
Pythonで辞書のネスト構造(入れ子辞書)を扱う方法 初心者向け完全ガイド
No.4
Java&Spring記事人気No4
Python
PythonでMySQLに接続する方法を完全解説!初心者でもわかるpymysqlの基本
No.5
Java&Spring記事人気No5
Python
PythonでExcelファイル(.xlsx)を操作する方法を徹底解説!初心者でもできるopenpyxl・pandasの使い方
No.6
Java&Spring記事人気No6
PHP
PHPで画像ファイルをアップロードする方法を初心者向けに徹底解説!わかりやすい画像処理入門
No.7
Java&Spring記事人気No7
PHP
PHP のデータ型を完全ガイド!初心者でもわかる int, string, float, bool など
No.8
Java&Spring記事人気No8
PHP
PHP の日付と時間の取得(date, time, strtotime)を完全解説!初心者でもわかる使い方
-
-