Зравствуйте!
Дополните пожалуйста цепочку моих рассуждений , без ссылок на матчасть (слишком не хочется перерывать кучу инфы, для того, чтобы найти один нюанс).
class A{
public function method(){
return $this->prop;
}
};
class B extends A{
private $prop = 10;
};
$b = new B();
$b->method(); /* Fatal error: Uncaught Error: Cannot access private property B::$prop */
1. вызываем метод класса
B::method()
2. у данного класса нету собственного метода
method(), поэтому выполняем поиск (и на ходим) метод у родительского класса
A
3. в методе класса
A ключевое слово
$this указывает на класс
B (
object(B)#1(1){["prop": "B": private]=>int(10)})
4. но при этом возникает ошибка
Fatal error: Uncaught Error: Cannot access private property B::$prop
Офк данный пример работает , если бы свойство
$prop объекта класса
B было либо
protected либо
public.
Непонятен момент , почему вроде как в методе A::method(), $this указывает на объект класса B, но при этом приватное свойство не может вернуть? Наверное всё дело в том ,где вызывается метод и где он был определён, но могу ошибаться...