PHP7: Строгая типизация
В PHP 7 нам предоставлена возможность указывать типы аргументов ф-ции и тип значения возвращаемого функцией, методом или замыканием.
По умолчанию (при нестрогой типизации), PHP будет пытаться привести значения несоответствующих типов к скалярному типу, если это возможно. Например, если в функцию передается integer, а тип аргумента объявлен string, в итоге функция получит преобразованное string значение.
Но вы можете включить строгий контроль за передаваемыми типами значений с помощью конструкции:
declare(strict_types=1);
Примечание
Включение режима строгой типизации также повлияет на объявления типов возвращаемых значений - при строгой типизации возвращаемое значение должно быть заданного типа, иначе будет выброшено исключение TypeError.
Внимание!
Строгая типизация применима только к скалярным типам и работает только в PHP 7.0 и выше. Также как и сами объявления скалярных типов добавлены в этой версии.
Режим строгой типизации распространяется на вызовы функций совершенные из файла, в котором этот режим включен, а не на функции, которые в этом файле объявлены. Если файл без строгой типизации вызывает функцию, которая объявлена в файле с включенным режимом, значения аргументов будут приведены к нужным типам и ошибок не последует.
Доступные типы значений в PHP 7:
- string;
- int;
- float;
- bool;
- array;
- callable;
- Closure;
Доступные только методов типы возвращаемых значений:
- self;
- parent;
- <имя класса>;
- <имя интерфейса>;
Примечание
Если вы хотите указать, что значением аргумента по умолчанию является NULL - нужно объявить тип NULL.
Синтаксис указания возвращаемого типа значения:
function someFn(array ...$arrays): array {
return array_map(function(array $array): int {
return array_sum($array);
}, $arrays);
}
#php7 strict mode