classに関するメモ
2008/04/18 | PHPの基本
PHPのクラスに関するメモ。
クラスAとそれを継承したクラスBのコンストラクタに関して、時々どうだったっけ、と思うのでメモしておく。
class A
{
function A(){print(‘A’);}
}
クラスBにコンストラクタがない場合
class B extends A
{
}
$obj=new B;
// Aと表示される(親クラスのコンストラクタが実行される)
クラスBにコンストラクタがある場合
class B extends A
{
function B(){print(‘B’);}
}
$obj=new B;
// Bと表示される(親クラスのコンストラクタは実行されない)
コンストラクタはPHP5以降、__construct()とも書けたりもするのでこんがらがってしまうけど、__construct()のほうがわかりやすい。
だって、
class B extends A
{
}
って書いてるのだから、コンストラクタはB()か__construct()であって、A()がコンストラクタにはならないほうがいいように思う。だって複数回継承されたときの元のコンストラクタがなんだったかわからなくなるから。昔からの名残だからしょうがないんだろうけど・・・。
やはりPHP5ライクな記述を目指すべきだと思った(PHP4の環境が当面なくなりそうにないからしょうがないか)。