@deepin

Почему родитель мешает созданию дочернего?

вопрос познавательный: у родителя защищённый конструктор, дочерний (на данный момент просто пустой класс) наследует родителя и при вызове из реестра получаем ошибку о том, что используется защищённый конструктор родителя в контексте (дочернего я так понимаю)

почему защищённый конструктор родителя мешает созданию дочернего, если парента нету в дочернем?

p.s. и почему дочерний, но не сыновий? :)
  • Вопрос задан
  • 243 просмотра
Пригласить эксперта
Ответы на вопрос 1
aleksejjjj
@aleksejjjj
Вот так будет работать. Потому что B имеет доступ к protected методам класса A. А вот ваш код где вы создаёте экземпляр класса B - не имеет.
class A
{
    protected function __construct()
    {
        echo 'Работает';
    }
}

class B extends A
{
    function __construct()
    {
        parent::__construct();
    }
}

new B();

А конструктор при создании экземпляра вызовется в любом случае. Либо явно как я показал, либо неявно. Попробуйте вообще без класса B обойтись.
class A
{
    protected function __construct()
    {
        
    }
}

// Fatal error
new A();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 55 000 до 80 000 руб.
СКАИД Москва
от 60 000 руб.
Paxport Москва
от 140 000 до 190 000 руб.