Выбор ответа Middle Типы и строгая типизация обновлено

Объединения и специальные типы

Вопрос

Какое объявление допустимо в PHP 8.2+?

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

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

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

Коротко

Правильный ответ: function f(intstring $id, ?array $opts = null): staticfalse. Объединения появились в PHP 8.0, false как самостоятельный тип в 8.2, static как возвращаемый в 8.0, ?array это сокращение arraynull.

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

  1. function f(int|int $id, ?array $opts = null): void
  2. function f(void $x, ?array $opts = null): int
  3. function f(mixed|null $x, array $opts = []): never|int
  4. function 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 ошибок.