Задать вопрос
Muranx
@Muranx
кто понял this тот в цирке не смеётся

Как в данном случае работает наследование?

Зравствуйте!

Дополните пожалуйста цепочку моих рассуждений , без ссылок на матчасть (слишком не хочется перерывать кучу инфы, для того, чтобы найти один нюанс).

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, но при этом приватное свойство не может вернуть? Наверное всё дело в том ,где вызывается метод и где он был определён, но могу ошибаться...
  • Вопрос задан
  • 253 просмотра
Подписаться 2 1 комментарий
Подписчики вопроса 2 К ответам на вопрос (2)