我来自J2EE背景,似乎PHP开发人员通常使用以下语句关闭并忽略通知: error_reporting(E_ALL& ~E_NOTICE);
我正在使用的应用程序充满了有关未设置变量的消息? 这对我来说似乎很奇怪。
答案 0 :(得分:10)
这是不好的做法,但这很常见。
你可以说它被认为是标准做法,因为它是开箱即用的默认设置。
然而,它是PHP中的默认设置这一事实不应被视为意味着它是个好主意! (咳嗽 register_globals
咳嗽)
问题是E_NOTICE
涵盖了未定义的变量和未定义的数组索引,前者是比后者更好的错误指示。
当您打算使用$var
时,隐藏的经典错误是使用$this->var
。仅仅因为这个原因,我认为清理未定义的数组索引警告消息是值得的,以便未定义的变量错误更明显。
我原以为PHP 5.3允许你将它们分开(我还没有使用它),但我只是看了一下,我找不到这个。
答案 1 :(得分:0)
它被认为是标准做法,因为它现在是新版PHP的默认设置。
你可以在使用它之前不设置变量就可以得到一些警告,因此立即决定(因为你知道它不会产生巨大的影响)就是把它们关掉。
如果您正确编程,那么就不需要
在我继承系统之前,我已将所有警告设置为关闭,因为无法修复此工作。
有关详细信息,请访问PHP page for error reporting
:)
答案 2 :(得分:0)
是的,它被认为是标准(有关良好与不良的意见)的做法。 Per the PHP manual:
在PHP 4和PHP 5中,默认值为E_ALL& 〜E_NOTICE。此设置不显示E_NOTICE级别错误。您可能希望在开发期间显示它们。
显示通知可以帮助调试错误,但是我想不出有时候我没有看到它们(我是一个很好的打字员)。我想这对于有Java背景的人来说是一种冲击,但是......
答案 3 :(得分:0)
不确定是否如上所述,但是本地开发服务器如:
许多其他人都有PHP错误设置来报告所有错误和通知。
等于error_reporting(E_ALL);
。
但是,如果您需要这些快速代码来检查通知或错误的代码,请设置服务器将针对特定PHP脚本执行的当前错误报告级别:
显示错误但未显示通知:
error_reporting(E_ALL & ~E_NOTICE | E_STRICT);
显示所有内容:
error_reporting(E_ALL);
仅显示错误:
error_reporting(E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR);
您只需在开始时在PHP脚本中添加其中一行。
PS:在您的托管服务器中显示通知不是一个好主意。当您发送到托管服务器
时,请务必删除这些行如果您希望将PHP.ini配置更改为其中一个值。
打开PHP.ini配置文件,大约514º行有默认的错误报告级别。
打开此帮助。
此致
编辑:这是514º线而不是504º。遗憾答案 4 :(得分:0)
官方发行版附带的默认php.ini文件有点精神分裂。一方面,它声称有利于发展(例如显示错误),但随后关闭了通知,同时注意打开它们将有利于开发。 (我实际上已经提交了一个关于此的错误,但它已经关闭,因为他们显然不想解决这个问题。) IME,大多数开发人员都不会更改此默认设置,因为他们中的大多数人都不知道他们可以。所以我看到一个很多的PHP代码,因此会生成Notices。
如果您有选择,请打开“通知”。然后去修复使用未设置变量和不使用的变量等代码。你的代码会更好。