PHPのクラスのコンストラクタについて、挙動が謎だったので調査。
そのメモを記載する。
何故かPHPでクラスを作る時は、クラス内にコンストラクタを作成しないといけないと認識していた。
しかし実際には不要
PHPのコンストラクタの機能として、クラスから新たなオブジェクトを作る時に、コンストラクタメソッドを実行する。
サンプルコード
class firstClass{ public function __construct(){ echo 'first class construct' . "<br>"; } } // 親クラスにコンストラクタメソッドが設定されている class secondClass extends firstClass{ } // 子クラス、親クラスともにコンストラクタメソッドが設定されている class thirdClass extends firstClass{ public function __construct() { echo 'third class construct' . "<br>"; } } $first = new firstClass(); $second = new secondClass(); $third = new thirdClass();
表示内容
first class construct first class construct third class construct
ちなみに、親クラスのコンストラクタメソッドがprivateメソッドだった場合、子クラスが新たにオブジェクトを作ったても、親クラスのコンストラクタメソッドは実行されない。