Оглавление
Особый случай строгой типизацииСтрогая типизация и подключение файловИтог
Строгая типизация в PHP
Подсказки типов (type hints) позволяют указывать типы для параметров функций и возвращаемых значений. Например:
В этом примере функция
add() принимает два целых числа и возвращает их сумму.Однако, если передать два числа с плавающей точкой - 1.5 и 2.5, функция вернёт 3, потому что по умолчанию PHP неявно приводит значения к целевым типам. В данном случае числа с плавающей точкой преобразуются в целые.
Чтобы включить строгую типизацию, используйте директиву
declare(strict_types=1); в начале файла:С добавлением директивы строгой типизации код будет выполняться в строгом режиме. PHP включает этот режим для каждого файла отдельно.
В строгом режиме PHP ожидает, что типы передаваемых значений будут строго соответствовать объявленным. Если обнаруживается несоответствие, PHP выдаст ошибку.
При повторном запуске скрипта вы получите ошибку:
Важно: директиву
declare(strict_types=1); необходимо размещать в самом начале файла скрипта, до любых других операторов.Особый случай строгой типизации
Директива строгой типизации имеет особенность: если целевой тип -
float, вы можете передать значение типа integer. Например:Строгая типизация и подключение файлов
Предположим, функция
add() определена в файле functions.php:И этот файл подключается в
index.php:Несмотря на то, что в
functions.php объявлена директива строгой типизации, это не влияет на index.php.Примечание: конструкция
include загружает код из другого файла в текущий. Подробнее об этом в следующих уроках.Когда вы вызываете функцию, определённую в файле со строгой типизацией, из файла без неё, PHP учитывает предпочтения вызывающего файла. То есть, решение о строгом режиме принимает вызывающий файл. В данном случае
index.php не будет выполняться в строгом режиме.Итог
Используйте директиву
strict_types в PHP для включения строгой типизации или строгого режима.В строгом режиме PHP принимает только значения, соответствующие объявлениям типов, и выдаёт исключение
TypeError при несоответствии.При подключении кода из другого файла PHP использует режим вызывающего файла.

