親スコープから子プロパティにアクセスする 質問する

親スコープから子プロパティにアクセスする 質問する

子のプロパティにアクセスするには親クラスが必要です。

class Parent {
  private $_fields = null;

  public function do_something() {
    // Access $_fields and $child_var here
  }
}

class Child extends Parent {
  private $child_var = 'hello';
}

$child = new Child();
$child->do_something();

$_fieldsが子スコープから変更された場合、それはまだnull親スコープ内にあります。 を使用して親スコープから $child_var にアクセスしようとすると$this->child_var、もちろん未定義になります。

子クラスにコピーされるだけの「関数セット」のようなものは見つかりませんでした...

ベストアンサー1

記事をご覧ください可視性

基本的に、親のprivateプロパティ/メソッドにアクセスすることはできませんし、親が子のプロパティ/メソッドにアクセスすることもできません。ただし、protected代わりに独自のプロパティ/メソッドを宣言することはできます。

class Parent {
    protected $_fields = null;

    public function do_something() {
        // Access $_fields and $child_var here
    }
}

class Child extends Parent {
    protected $child_var = 'hello';
}

$child = new Child();
$child->do_something();

おすすめ記事