0

私を驚かせている質問があります。親コンストラクターは、呼び出されずに自分自身を構築しますか?

原因は、私が書いているスクリプトではなく、状況で機能しているのを見ているからです。

私は以下を得ました:

boot.php

$this->router = new router($param);

ルーター.php

class router extends routerController
  • クラスルーターには__constructがありません。

routercontroller.php

class routerController{
    function __construct($param){
        $this->param = $param;
    }
  • クラス ルーターに __construct を追加すると、拡張クラス routerController の __construct は実行されません。したがって、この場合、コンストラクターはparent::_constructなしで構築されているようです。

同じスクリプトで、routerController クラスに入りました。

$this->newclass = newclass($this->param);

newClass は someClass を拡張します。何らかの理由で、parent::__construct($param) を使用して newClass から呼び出さないと、someClass コンストラクターがインスタンス化されません。

私はすでにすべてのコードを確認するのに何時間も費やしましたが、何が間違っているのかを見つけることができません。最初のケースでは親コンストラクターが呼び出されずにインスタンス化され、2 番目のケースではインスタンス化されないのはなぜですか?

これはバグですか?私が間違っていることは何ですか?

4

1 に答える 1

1

PHP では、親コンストラクターは暗黙的に呼び出されません。

ソース: http://php.net/manual/en/language.oop5.decon.php

于 2011-09-18T07:36:48.803 に答える