Попробую упростить вопрос до минимума(на примере Laravel):
Имеем некий базовый класс с публичным свойством:
class SomeClass
{
public $var = 'Hello, world!';
}
Имеем второй класс, где внедряем зависимость базового класса:
class TestClass
{
public function action(SomeClass $someClass)
{
return $someClass->var;
}
}
Проверяем:
public function index(TestClass $testClass)
{
dd( $testClass->action(new SomeClass()) ); // выводит - 'Hello, world!'
}
Изменяем свойство класса SomeClass на protected:
class SomeClass
{
protected $var = 'Hello, world!';
}
Проверяем:
public function index(TestClass $testClass)
{
dd( $testClass->action(new SomeClass()) ); // получаем ошибку - Cannot access protected property
}
Наследуемся в классе TestClass:
class TestClass extends SomeClass
{
public function action(SomeClass $someClass)
{
return $someClass->var;
}
}
Проверяем:
public function index(TestClass $testClass)
{
dd( $testClass->action(new SomeClass()) ); // выводит - 'Hello, world!'
}
Так вот: каким образом наследование влияет на свойство(теперь работает и с public и с protected)?