nazolabo

フリーランスのWebエンジニアが近況や思ったことを発信しています。

PHP4のコンストラクタ

MT312 - PHP/コンストラクタの呼ばれ方
http://www.mt312.com/php/oop.constractor.html

なんか挙動がおかしいと思ったら、PHP4のコンストラクタは、一番近い(?)継承先のコンストラクタのみしか呼ばないらしい。
つまりA→B→Cという継承をして、Cを生成した場合、全てにコンストラクタがある場合はCのコンストラクタだけ呼ばれ、AとBしか無い場合はBのコンストラクタだけ呼ばれるらしい。
PHP4で継承元のコンストラクタを正しく呼ぶには、継承先で継承元のコンストラクタを明示的に呼び出すしかないのかな。

class baseObj {
    function baseObj() {
    }
}

class extendObj extends baseObj {
    function extendObj() {
        Parent::baseObj();
    }
}

こんな感じ。
PHP5ならもうちょいまともに書けるんだろうけどなー。