XtremallyPurpur
Новичок
ООП в PHP. Вызов защищенных методов в новых экземплярах класса.
Добрый день!
Я завел баг, но его закрыли с пометкой "Bogus".
Все-таки я считаю это багом.
Посмотрите код:
Таким образом, если "c" является потомком от "a", из "с" можно вызывать защищенные методы экземпляров любого потомка "a".
По-большому счету, проблема не очень серьезная. Меня интересует, прав я или нет с точки зрения идеологии.
PS. Я воспроизвел этот код на C++. В коде на плюсах поведение как я и ожидал - вызывать подобным образом защищенные методы нельзя, вне зависимости является ли "c" потомком "a" или нет.
Добрый день!
Я завел баг, но его закрыли с пометкой "Bogus".
Все-таки я считаю это багом.
Посмотрите код:
PHP:
class a
{
protected function aa()
{
echo "a-aa\n";
}
}
class b extends a
{
protected function aa()
{
echo "b-aa\n";
}
}
// Если класс "c" наследует от "a" - тогда в новых экземплярах "a" и "b" мы можем вызывать их защищенные методы
// Если класс "c" не наследует от "a" - тогда вызывать защищенные методы нельзя
class c extends a
{
public function cc()
{
$obj = new a();
$obj->aa();
$obj2 = new b();
$obj2->aa();
}
}
$c = new c();
$c->cc();
По-большому счету, проблема не очень серьезная. Меня интересует, прав я или нет с точки зрения идеологии.
PS. Я воспроизвел этот код на C++. В коде на плюсах поведение как я и ожидал - вызывать подобным образом защищенные методы нельзя, вне зависимости является ли "c" потомком "a" или нет.