Я передал аргумент по значению, что строка «foo» и не сгенерировал ошибку, но я знаю, что если бы я объявил bool, я мог только передать логическое значение, иначе это вызовет исключение TypeError в php 7.
здесь я дал мой пример кода
function my_fnc(bool $val){
echo $val;
}
my_fnc("hellow");
Когда я выполнил не было ошибки. Зачем?
Я знаю strict_types, но в этом типе (слабый тип) почему я не получил ошибку и как она работала?
Это работает, потому что вы не объявили, что strict_types должен быть включен. Самая первая строка в вашей программе должна быть declare(strict_types=1);
для обеспечения строгих типов. Если вы измените свой пример, как показано ниже, вы получите сообщение об ошибке, как и ожидалось.
declare(strict_types=1);
function my_fnc(bool $val){
echo $val;
}
my_fnc("hellow");
Неустранимая ошибка: Uncaught TypeError: Аргумент 1, передаваемый my_fnc (), должен быть
типа bool, данная строка
Других решений пока нет …