Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама

Як працюють union, nullable і mixed типи?

  • Nullable ?T - значення типу T або null: ?string.
  • Union A|B (PHP 8.0) - будь-який з перелічених типів: int|string. ?string - це скорочення для string|null.
  • mixed (PHP 8.0) - будь-який тип, включно з null. Явно каже: «тут справді що завгодно».
  • Intersection A&B (PHP 8.1) - об'єкт, що реалізує всі перелічені інтерфейси.
function findUser(int|string $id): ?User
{
    return is_int($id) ? User::find($id) : User::firstWhere('slug', $id);
}

Що варто знати:

  • Union-тип змушує код усередині розрізняти варіанти (is_int, instanceof). Якщо гілок стає багато, це сигнал, що функція робить дві різні речі.
  • mixed не означає «тип не вказали»: він дозволяє все і забирає в аналізатора можливість допомогти. Використовуйте його лише там, де значення справді довільне - наприклад, у кеші.
  • Під declare(strict_types=1) скалярні типи не приводяться: findUser('5') передасть рядок, а не число.
  • PHP 8.2 дозволив і DNF-типи: (A&B)|null.

Докладніше в документації: Оголошення типів

Перевір себе

20 випадкових питань за спробу, після завершення - розбір кожної помилки

Схожі питання