役立つ情報
登録日: 2025-03-23   最終更新日: 2025-03-23

第7章 7.2 コンストラクタとデストラクタ

オブジェクト指向プログラミング (OOP) において、オブジェクトの生成時や破棄時に特定の処理を実行するために、コンストラクタ (constructor) と デストラクタ (destructor) が用意されています。

7.2.1 クラスの初期化処理

PHPでは、クラスのインスタンスが生成される際に コンストラクタ を定義することで、初期化処理を自動的に実行できます。

コンストラクタの定義 PHPのコンストラクタは __construct() という名前のメソッドとして定義します。


class User {
    public string $name;
    
    // コンストラクタ
    public function __construct(string $name) {
        $this->name = $name;
        echo "ユーザー {$this->name} が作成されました。\n";
    }
}

// オブジェクトの生成
$user1 = new User("Taro");
$user2 = new User("Hanako");
ユーザー Taro が作成されました。
ユーザー Hanako が作成されました。

コンストラクタはクラスを元にオブジェクトを作成 (new クラス名()) すると自動的に呼び出されます。 また、コンストラクタの引数を通じてオブジェクトの初期値を設定できます。

7.2.2 オブジェクトの破棄とメモリ管理

オブジェクトが不要になったとき、自動的にクリーンアップを行うために デストラクタ を定義できます。

デストラクタの定義 デストラクタは __destruct() という名前のメソッドとして定義します。


class User {
    public string $name;
    
    public function __construct(string $name) {
        $this->name = $name;
        echo "ユーザー {$this->name} が作成されました。\n";
    }

    // デストラクタ
    public function __destruct() {
        echo "ユーザー {$this->name} を削除しました。\n";
    }
}

// オブジェクトの生成と削除
$user1 = new User("Taro");
unset($user1); // 明示的にオブジェクトを削除
echo "プログラム終了\n";
ユーザー Taro が作成されました。
ユーザー Taro を削除しました。
プログラム終了

デストラクタの動作

  • unset($user1); により、オブジェクト $user1 がメモリから削除され、デストラクタ __destruct() が実行されます。

  • unset() しなくても、スクリプト終了時にPHPのガベージコレクションがオブジェクトを削除し、デストラクタが呼ばれます。

この章では、PHPのオブジェクト指向におけるコンストラクタとデストラクタの基本的な使い方を学びました。
次の章では、クラスの継承とその応用について学んでいきます。


次のページへ
第7章 7.3 継承とポリモーフィズム

前のページへ
第7章 7.1 クラスとオブジェクト

トップページへ
PHP参考書: はじめてのPHPプログラミング

Copyright 役立つ情報.net