投稿

ラベル(デストラクタ)が付いた投稿を表示しています

[PHP] コンストラクタとデストラクタ

コンストラクタ PHPでクラスを利用する際に、最初にnew演算子によってクラスのインスタンスを作成するという作業を行いますが、この時に実行されるメソッドをコンストラクタと言います。 コンストラクタは省略可能で、省略した場合引数を持たないデフォルトのコンストラクタが内部的に用意されます。 コンストラクタの定義構文 public function __construct(引数) { // プロパティなどの初期化処理 } [実装例]コンストラクタでメンバー変数を初期化する コード class Test{ private int $id; private string $name; public function __construct(int $id, string $name) { echo __METHOD__, "\n"; $this->id = $id; $this->name = $name; } } $test = new Test(1, "Test Name"); var_dump($test); 実行結果 $ php test_construct.php Test::__construct object(Test)#1 (2) { ["id":"Test":private]=> int(1) ["name":"Test":private]=> string(9) "Test Name" } [間違った実装例]引数なしのコンストラクタを呼び出す 引数ありのコンストラクタを定義した状態で、引数なしのコンストラクタを呼び出すとエラーになります。コンストラクタをクラスに明示的に定義した時点で、デフォルトのコンストラクタは無効になります。 コード class Test{ private int $id; private string $name; public function __construct(int $id, string $na