Выбор ответа Middle Типы и строгая типизация обновлено
Объединения и специальные типы
Вопрос
Какое объявление допустимо в PHP 8.2+?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: function f(intstring $id, ?array $opts = null): staticfalse. Объединения появились в PHP 8.0, false как самостоятельный тип в 8.2, static как возвращаемый в 8.0, ?array это сокращение arraynull.
Варианты ответа
function f(int|int $id, ?array $opts = null): voidfunction f(void $x, ?array $opts = null): intfunction f(mixed|null $x, array $opts = []): never|intfunction f(int|string $id, ?array $opts = null): static|falseправильный ответ
Разбор
Объединения появились в PHP 8.0, false как самостоятельный тип в 8.2, static как возвращаемый в 8.0, ?array это сокращение array|null. Дублирование типов в объединении запрещено. void бывает только возвращаемым типом. mixed уже включает null, поэтому mixed|null ошибка, а never нельзя объединять с другими типами.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.