0

基本クラス:

class A {

    public x;
    public y;

    public function __construct {

        $this->x = new X();
        $this->y = new Y();
    }
}

クラスX:

class X extends A {

    public function __construct {}

    public function job() {

        echo 'x working!';
    }
}

クラスY:

class Y extends A {

    public function __construct {}

    public function job() {

        var_dump($this->x);    // NULL, Why???

        $this->x->job();
    }
}

問題x->job(): class 内から呼び出すと、既にインスタンス化Yされたオブジェクトに完全にアクセスできず、それが.Xvar_dumpnull

それの何が問題なのですか?

ありがとう!:)

アップデート:

parent::__construct();子クラスの__construct()メソッドで使用すると、 が生成されFatal Error: maximum function nesting level of '100' reached, aborting!ます。そのため、これらの空の__construct()メソッドを追加します。それを解決する方法はありますか?

ソースコードにもこれがあります:

$base = new A();

つまり、コンストラクターは既に実行されているはずですよね?

4

2 に答える 2

5

chil クラス コンストラクターを呼び出す必要がありますparent::__construct()。そうしないと、親コンストラクターが呼び出されず、プロパティはその値を受け取りません。

于 2012-09-12T12:30:04.813 に答える
1

この例の場合、何もしないため、子クラスのコンストラクターを除外することもできます。それ以外の場合は、GolezTrol によって提案されたメソッドを使用します。

于 2012-09-12T12:31:35.210 に答える