Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про PHP: constructor, inheritance

Можно ли в конструкторе вызвать конструктор родительского класса (как именно)?

Вопрос проверяет знание наследования и понимание жизненного цикла объекта при создании.

Короткий ответ

Да, в конструкторе дочернего класса можно и нужно вызывать конструктор родителя. Это делается через parent::__construct(). Такой вызов позволяет корректно инициализировать состояние родительского класса. Без этого часть логики может быть пропущена.

Длинный ответ

При наследовании важно помнить, что PHP не вызывает конструктор родителя автоматически, если в дочернем классе объявлен свой конструктор.

1) Базовый пример

class Animal {
    protected string $name;

    public function __construct(string $name) {
        $this->name = $name;
    }
}

2) Дочерний класс с собственным конструктором

class Dog extends Animal {
    private int $age;

    public function __construct(string $name, int $age) {
        parent::__construct($name);
        $this->age = $age;
    }
}

Здесь:

  • parent::__construct($name) инициализирует часть родителя

  • Затем инициализируются поля дочернего класса

3) Что будет, если не вызвать parent::__construct()

  • Свойства родительского класса могут остаться неинициализированными

  • Логика в конструкторе родителя не выполнится

  • Возможны ошибки и некорректное состояние объекта

4) Когда вызов не нужен

  • Если у родителя нет конструктора

  • Если конструктор родителя пустой

5) Практическая рекомендация

Хорошая практика:

  • Сначала вызывать parent::__construct()

  • Затем инициализировать собственные поля

Краткий вывод

Если у родителя есть конструктор с логикой — его нужно вызывать явно через parent::__construct(). Это гарантирует корректное создание объекта и предсказуемое поведение.

  • Аватар

    PHP Guru

    Mikhail Savin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    4

Навыки

  • PHP

    PHP

Ключевые слова

#constructor

#inheritance

Подпишись на PHP Developer в телеграм

  • Аватар

    PHP Guru

    Mikhail Savin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.