Я объявил тип bool перед моим параметром ($ val) внутри функции (my_fnc) - PullRequest
0 голосов
/ 04 февраля 2019

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

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

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

my_fnc("hellow");

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

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

1 Ответ

0 голосов
/ 04 февраля 2019

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

...