Я объявил тип bool перед моим параметром ($ val) внутри функции (my_fnc)

Я передал аргумент по значению, что строка «foo» и не сгенерировал ошибку, но я знаю, что если бы я объявил bool, я мог только передать логическое значение, иначе это вызовет исключение TypeError в php 7.

здесь я дал мой пример кода

function my_fnc(bool $val){
echo $val;
}

my_fnc("hellow");

Когда я выполнил не было ошибки. Зачем?

Я знаю strict_types, но в этом типе (слабый тип) почему я не получил ошибку и как она работала?

0

Решение

Это работает, потому что вы не объявили, что 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, данная строка

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]