コンストラクタの呼ばれ方
PHP4では、コンストラクタの扱いに注意が必要。
単独クラスの場合
PHP:
オーバーロードの項目で述べた様に、コンストラクタも複数定義できません。
よって、引数のデフォルト値を使う事で対応可能です。
PHP:
-
class ClassA {
-
function ClassA($arg='') {
-
print "ClassA with $arg";
-
}
-
}
-
// どちらもOK
-
$obj = new ClassA();
-
$obj = new ClassA('arg');
継承した場合
PHP:
この場合、親の引数なしコンストラクタは一切呼ばれません。
親のコンストラクタを真っ先に呼びたい場合、Parent::(JAVAで言うsuper)を使って明示的に呼ぶ必要があります。オブジェクト作成後は普通に呼ぶ事ができます。
PHP:
コンストラクタは継承関係がある場合、階層を遡り最後に定義された1つだけが呼ばれます。