我有点难以接受标量类型提示问题(PHP7应该能够处理).基本上,我创建一个bool类型提示的方法只允许布尔值传递.然而它失败了,并让其他类型的字符串传递.我相信过去这对我有用.以该片段为例.第一个转储结果为false(这是有道理的,因为’test’是一个字符串),第二个转储结果为true,这对我没有意义.我希望触发PHP错误,因为该类型不是布尔值.有什么想法吗?
class Test{
function something(bool $test){
var_dump($test); // "Second dump"
}
}
$value = 'test';
var_dump(is_bool($value)); // "First dump"
$test = new Test;
$test->something($value);
结果:
bool(false)
bool(true)
解决方法:
您必须在文件中声明严格键入[1]以强制PHP不执行类型强制[2].
[2] – “默认情况下,如果可能,PHP会将错误类型的值强制转换为预期的标量类型.”
PHP
< PHP
声明(strict_types = 1);
标签:type-hinting,php,oop
来源: https://codeday.me/bug/20190828/1750265.html