子のプロパティにアクセスするには親クラスが必要です。
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();