根据我设置的错误报告,我的网络应用程序可以正常运行或显示大量错误。我的印象是我不需要在PHP中启动变量,但设置第二个错误报告似乎需要它。这是怎么回事?我应该通过并启动所有变量吗?
error_reporting(E_ALL ^ E_NOTICE);
error_reporting(E_ALL | E_STRICT);
答案 0 :(得分:1)
PHP试图通过发出警告来帮助您 - 注意它们是一个非常好的主意。
您的代码可能有效,但PHP表示您没有考虑某些事情 - 比如初始化变量。
就个人而言,我尽可能多地发出警告。我们都会偶尔出错或遗忘。解释器可以帮助您确保它告诉您这些事情。充分利用它。
答案 1 :(得分:1)
您询问是否取消未初始化变量的警告,但您发布的代码会抑制所有 E_NOTICE
警告。这不是完全相同的事情,但它可以直接达到你所要求的;没有办法只抑制未初始化的变量通知。
在某种程度上,通知可能是所有人最重要的警告/错误消息,因为它们指出了潜在的logic errors,这是最难识别和修复的。{/ p>
鉴于您的选择:
E_NOTICE
警告。我建议选择#2。这是更多的前期工作,但是一个适时的E_NOTICE
可能会在一天中为您节省大量的麻烦。
答案 2 :(得分:0)
如果您在初始化之前引用标识符,则会收到notice
错误。
例如:
echo $variable; // is referencing to $variable which is not set before
echo $arrayname['indexname'] // it is also referencing to indexname item of array,
// if not found it will index another notice error
因此,请确保在我们的代码中引用标识符/变量之前声明它,您将是安全的。
答案 3 :(得分:0)
您遇到的是警告和错误之间的区别。警告意味着“这可能不会产生您建议的输出”,错误意味着“这不能正常工作”。如果您的应用程序正常工作,您可以毫无问题地禁止警告。但是如果你出现奇怪的行为,打开E_STRICT警告可能会导致你的代码中的错误。
例如,如果您尝试遍历数组,但它从不产生任何结果,则启用E_STRICT警告可能会提醒您在尝试循环之前未对数组进行初始化。
一般来说,您将在生产环境中关闭E_STRICT警告。在使用它们之前确保变量已初始化通常是一种很好的做法。