$this
- это просто переменная объекта - особая, потому что она является текущей, но она все еще является просто переменной объекта.
Поскольку $B::B
является общедоступной переменной-членом, к ней можно получить доступиз любого места доступна ссылка на экземпляр B
, например, с помощью переменной объекта.
Поскольку открытые члены доступны везде, к любой функции, даже из A::methodA()
, можно получить доступ.
Так что тут не о чем удивляться.Наследование классов в вашем примере относится только к (невидимой) передаче объектной переменной в виде $this
«параметра» при вызове A::methodA()
.
См. Следующий пример, который, вероятно, делает его более видимым:
function methodA($object) {
echo $object->B;
}
class B {
public $B = "It's working!";
public function methodA() {
methodA($this);
}
}