Выбор ответа Junior ООП, трейты и интерфейсы обновлено

Продвижение свойств в конструкторе

Вопрос

Что делает такой конструктор в PHP 8?

final class SignupService {
    public function __construct(
        private UserRepository $repo,
        private Mailer $mailer,
    ) {}
}

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Объявляет закрытые свойства $repo и $mailer и присваивает их. Constructor property promotion (PHP 8.0) объединяет объявление свойства, параметр конструктора и присваивание.

Варианты ответа

  1. Только принимает параметры, свойства нужно объявить отдельно
  2. Создаёт публичные свойства $repo и $mailer без присваивания
  3. Объявляет закрытые свойства $repo и $mailer и присваивает ихправильный ответ
  4. Вызывает ошибку: модификаторы доступа нельзя писать у параметров

Разбор

Constructor property promotion (PHP 8.0) объединяет объявление свойства, параметр конструктора и присваивание. Модификатор у параметра задаёт видимость свойства, можно добавить readonly (8.1). Пустое тело конструктора допустимо.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.