@deepin

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

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

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

p.s. и почему дочерний, но не сыновий? :)
  • Вопрос задан
  • 254 просмотра
Пригласить эксперта
Ответы на вопрос 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();
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
ЧИТАЙ-ГОРОД Москва
от 140 000 до 210 000 ₽
Директ Кредит Казань
от 70 000 до 120 000 ₽
Zoon Санкт-Петербург
от 120 000 до 180 000 ₽
28 февр. 2020, в 16:23
20000 руб./за проект
28 февр. 2020, в 16:20
300 руб./за проект
28 февр. 2020, в 15:07
50000 руб./за проект