Зравствуйте!
Дополните пожалуйста цепочку моих рассуждений , без ссылок на матчасть (слишком не хочется перерывать кучу инфы, для того, чтобы найти один нюанс).
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
, но при этом приватное свойство не может вернуть? Наверное всё дело в том ,где вызывается метод и где он был определён, но могу ошибаться...