Оглавление
Подсказки типов для параметров функцийПодсказки типов для возвращаемых значений функцийОбъединённые (union) типыТип mixedNullable-типыИтог
Подсказки типов в PHP
PHP - это язык с динамической типизацией. При определении функции не требуется объявлять типы параметров. Например:
Функция
add() принимает два аргумента и возвращает их сумму. В этом примере мы передаём два целых числа и получаем результат в виде целого числа.Если передать два числа с плавающей точкой, результатом будет сумма этих чисел с плавающей точкой:
Интереснее становится, если передать целое число и числовую строку, то функция вернёт целое число:
В этом случае PHP неявно преобразует строку
'2' в целое число из-за оператора +.Если преобразование строки в число невозможно, возникнет ошибка:
Для строгого контроля типов можно использовать подсказки типов.
Подсказки типов для параметров функций
Подсказки типов позволяют PHP проверять тип значения при вызове функции и выбрасывать исключение
TypeError при несоответствии.Чтобы добавить подсказку типа к параметру, укажите тип перед именем переменной:
В PHP 5 поддерживаются типы
array, callable и имя класса. В PHP 7 и новее доступны скалярные типы: bool, float, int, string.Пример функции, принимающей только целые числа:
Если передать число с плавающей точкой, оно будет неявно приведено к целому:
PHP выдаст предупреждение о потере точности при таком преобразовании.
Для строгой проверки типов используйте объявление строгой типизации.
Подсказки типов для возвращаемых значений функций
Чтобы указать тип возвращаемого значения, добавьте его после заголовка функции:
Пример:
С PHP 7.0 для функций, не возвращающих значение, используется тип
void:Объединённые (union) типы
С PHP 8.0 можно указывать несколько возможных типов возвращаемого значения через union-типы:
В этом примере функция возвращает либо целое число, либо число с плавающей точкой, в зависимости от типов аргументов.
Тип mixed
Если функция может возвращать значения разных типов, используйте тип
mixed (доступен с PHP 8.0). Он эквивалентен объединению: object|resource|array|string|int|float|bool|null.Пример функции:
Nullable-типы
Если требуется разрешить передачу или возврат значения
null, используйте nullable-типы (с PHP 7.1), добавляя префикс ? к названию типа.Пример:
Тип
mixed уже включает null, поэтому использовать ?mixed нельзя - это вызовет ошибку.Итог
- Используйте подсказки типов для параметров и возвращаемых значений функций.
- Для функций без возвращаемого значения используйте тип
void. - Для нескольких возможных типов используйте union-типы или тип
mixed. - Для разрешения значения
nullиспользуйте nullable-типы с префиксом?.

