Выбор ответа Junior ООП, трейты и интерфейсы обновлено
Продвижение свойств в конструкторе
Вопрос
Что делает такой конструктор в PHP 8?
final class SignupService {
public function __construct(
private UserRepository $repo,
private Mailer $mailer,
) {}
}
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Объявляет закрытые свойства $repo и $mailer и присваивает их. Constructor property promotion (PHP 8.0) объединяет объявление свойства, параметр конструктора и присваивание.
Варианты ответа
- Только принимает параметры, свойства нужно объявить отдельно
- Создаёт публичные свойства
$repoи$mailerбез присваивания - Объявляет закрытые свойства
$repoи$mailerи присваивает ихправильный ответ - Вызывает ошибку: модификаторы доступа нельзя писать у параметров
Разбор
Constructor property promotion (PHP 8.0) объединяет объявление свойства, параметр конструктора и присваивание. Модификатор у параметра задаёт видимость свойства, можно добавить readonly (8.1). Пустое тело конструктора допустимо.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.