拿这行PHP:
$foo["bar"] = 1;
Run Code Online (Sandbox Code Playgroud)
如果$foo不存在,我希望PHP抛出异常.现在,它不会抛出异常,甚至打印错误或警告,即使display_errors设置为1并error_reporting调用E_ALL.相反,它创建一个数组$foo并设置$foo["bar"]为1,即使该变量$foo事先不存在.
是否有类似的东西declare(strict_types=1);可以检查这个?
我想要这个的原因是,当我不小心拼错一个变量名时,我可以更容易地检测拼写错误.
小智 5
不幸的是,您正在使用该命令设置一个数组.如果你设置这个,为什么php会抛出异常?
这就像为变量赋值,然后问为什么PHP将值赋给变量?
$foo["bar"] = 1;
print_r($foo);
// This prints the following:
// Array ( [bar] => 1 )
Run Code Online (Sandbox Code Playgroud)
正确的检查方式是:
if(isset($foo))
{
$foo['bar'] = 1;
}
else
{
// do something if $foo does not exist or is null
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!简而言之,您的问题的答案是否定的:没有办法让PHP在您的示例中抛出异常或打印警告.