提问人:SeanDowney 提问时间:9/17/2008 最后编辑:SeanDowney 更新时间:1/19/2016 访问量:20535
建议的 error_reporting() 开发设置是什么?E_STRICT呢?
What is the recommended error_reporting() setting for development? What about E_STRICT?
问:
通常,我习惯于查看PHP可能对我的代码说的任何内容,以尝试改进它。E_ALL
我刚刚注意到一个错误常量,但从未使用或听说过它,这是用于开发的好设置吗?手册说:E_STRICT
运行时通知。启用 PHP 可以建议对代码进行更改,这将确保代码的最佳互操作性和向前兼容性。
所以我想知道我是否使用了最好的水平,或者它会是最好的?或者还有其他我还没有学会的组合吗?error_reporting
E_ALL
E_STRICT
答:
ini_set(“display_errors”,“2”); ERROR_REPORTING(E_ALL);
评论
error_reporting( E_ALL | E_STRICT )
E_ALL
E_STRICT
在我看来,您在开发阶段设置的错误报告级别越高越好。
在实时环境中,您希望稍微(但只是略微)减少集合,但您希望将它们记录在用户看不到的地方(我更喜欢)。syslog
http://php.net/error_reporting
E_ALL | E_STRICT
用于使用 5.2.0 之前的 PHP 进行开发。
5.2 介绍和 5.3 介绍 和 .如果您运行的是其中一个版本,您可能需要打开这些版本。E_RECOVERABLE_ERROR
E_DEPRECATED
E_USER_DEPRECATED
如果你想使用幻数,你可以将值设置为某个相当高的值 - 比如说,,这实际上只会打开 之间的所有位。但我不认为使用幻数是个好主意......error_reporting
2^n-1
16777215
1..n
在我看来,PHP并没有真正成为全部,所以有点丢球了。但显然它将在 PHP 6 中修复......E_ALL
在 PHP 5 中,所涵盖的内容没有被 所涵盖,所以要获得最多的信息,你需要将它们组合起来:E_STRICT
E_ALL
error_reporting(E_ALL | E_STRICT);
在 PHP 5.4 中,将包含在 中,因此您可以只使用 。E_STRICT
E_ALL
E_ALL
您还可以使用
error_reporting(-1);
这将始终启用所有错误。哪个在语义上更正确:
error_reporting(~0);
评论
-1 != ~0
error_reporting(-1)
error_reporting(~0)
在较新的 PHP 版本中,E_ALL包含更多类错误。从 PHP 5.3 开始,E_ALL 包含了除 E_STRICT 之外的所有内容。在 PHP 6 中,它甚至会包含这一点。这是一个很好的提示:看到更多的错误消息比看到更少的错误消息要好。
E_ALL中包含的内容记录在在线手册的 PHP 预定义常量页面中。
就个人而言,我认为如果你使用E_STRICT并不重要。它当然不会伤害你,特别是因为它可能会阻止你编写在PHP的未来版本中被破坏的脚本。另一方面,在某些情况下,严格的消息可能太嘈杂,尤其是在您赶时间的情况下。我建议你默认打开它,当它变得烦人时关闭它。
评论
根据此代码的长期支持计划,启用调试可能有助于代码在遥远的将来继续工作,但对于日常使用来说可能有点矫枉过正。有两件重要的事情需要牢记:E_STRICT
E_STRICT
- 根据手册,大多数错误是在编译时生成的,而不是在运行时生成的。如果将错误级别提高到代码范围内(而不是通过php.ini),则可能永远不会看到错误。
E_STRICT
E_ALL
E_STRICT
E_STRICT
包含在 PHP 6 中,但不包含在 PHP 5 下。如果您将服务器升级到 PHP6,并按照上面 #1 中的描述进行配置,您将开始看到错误,而无需您进行任何其他更改。E_ALL
E_ALL
E_STRICT
评论
严格来说,error_reporting,我强烈建议使用任何自动显示解析错误和常见故障(例如,条件分配)的IDE。
Zend Studio for Eclipse 默认启用了此功能,自从我开始使用它以来,它在错误发生之前帮助我抓住了很多帮助。
例如,我有一段代码,我在变量中缓存了一些数据,但我无意中写了。数据从未被缓存过,我永远不知道 Zend 是否告诉我:“嘿,这个东西只出现一次,这可能是一个错误”。$GLOBALS
$_GLOBALS
$_GLOBALS
在php.ini中使用以下命令:
error_reporting = E_ALL | E_STRICT
此外,您应该安装 Xdebug,它可以突出显示您的错误,使明亮的颜色致盲并打印有用的详细信息。
永远不要让代码中出现任何错误或通知,即使它是无害的。
您可以使用
它将始终由所有位组成(即使它们不在E_ALL中)error_reporting = -1
评论