Этот вопрос проверяет знание строгого режима типизации и его влияние на вызовы функций.
В обычном режиме PHP автоматически приводит типы аргументов при вызове функции, пытаясь подогнать значения под объявленные типы. При declare(strict_types=1) такое преобразование не выполняется: аргумент должен точно соответствовать объявленному типу, иначе будет ошибка TypeError. Строгий режим влияет только на типы скалярных аргументов и работает на уровне файла. Это способ сделать код более предсказуемым и избегать случайных приведений.
declare(strict_types=1) делает типы параметров и возвращаемых значений строгими.
Определение: Strict types — это режим, при котором PHP запрещает автоматическое приведение типов при передаче аргументов.
Действует только в файле, где объявлен.
Без strict_types
PHP приводит типы автоматически.
php
function sum(int $a, int $b) { return $a + $b; }
echo sum("3", 4); // работает
Со strict_types
Передача строки вызовет ошибку:
php
declare(strict_types=1);
function sum(int $a, int $b) { return $a + $b; }
echo sum("3", 4); // TypeError
Только на скалярные типы (int, float, string, bool).
Не влияет на объекты — они проверяются и так строго.
Влияет только на вызовы функций внутри данного файла.
уменьшение скрытых ошибок
повышение прозрачности кода
более строгий контракт API
Использование strict_types=1 рекомендуется в проектах, где важна надёжность и предсказуемость поведения.