По умолчанию PHP пытается привести значения несоответствующих типов к скалярному типу, если это возможно. Например, если в функцию передается целое число (int), а тип аргумента объявлен как строка (string), в итоге функция получит преобразованное в строку (string) значение.
Для отдельных файлов можно включать режим строгой типизации. В этом режиме в функцию можно передавать значения только тех типов, которые объявлены для аргументов. В противном случае будет выбрасываться исключение TypeError. Есть лишь одно исключение — целое число (int) можно передать в функцию, которая ожидает значение типа float.
Post #680
460