0

私は PHP オブジェクトに取り組んでいますが、問題があります。マザー クラスから属性 (オブジェクト) を呼び出そうとしましたが、null です。私の問題を紹介します:

Class A {
    protected $attribute;
    
    public function __construct() {
         $this->attribute = new C();
    }

    public function foo() {
        new B();
    }
}

Class B extends A {
     public function __construct() {
         var_dump($this->attribute) // show "NULL"
     }
}
4

1 に答える 1

0

BでAのコンストラクターをオーバーライドしています。つまり、 A のコンストラクターは呼び出されず、その結果、設定されません。A のコンストラクターを B で実行する場合は、明示的に実行する必要があります。$attribute

class B extends A {
     public function __construct() {
         parent::__construct(); // This is required if you want to execute A's constructor
         var_dump($this->attribute);
     }
}
于 2013-05-15T16:07:11.927 に答える