2009-10-28 74 views
10
  • E_ALL等于8191(0001 1111 1111 1111
  • E_STRICT等于2048(0000 1000 0000 0000

使用按位或将它们结合起来:E_ALL |有什么意义? E_STRICT是否与E_ALL的值相同?

1 1111 1111 1111 
    1000 0000 0000 

我们得到确切相同的值作为原始E_ALL

1 1111 1111 1111 

如果我们可以简单地做error_reporting(E_ALL)来做同样的事情,那么干什么error_reporting(E_ALL | E_STRICT)

+0

我注意到用5.4我可以做到以下 1.在php.ini中设置E_ALL然后E_ALL | E_STRICT 2.检查phpinfo()和错误报告的值是否相同。 这看起来像是一个错误.... – 2012-10-25 07:55:57

+0

使用https://maximivanov.github.io/php-error-reporting-calculator/创建您的选择的错误报告 – pkachhia 2017-05-24 06:44:58

回答

18

你想:

error_reporting(E_ALL | E_STRICT); 

E_ALL不包括E_STRICT(除非您使用PHP 5.4+)。您的值不正确。之前,PHP 5.4

所有错误和警告,如支持, 除了E_STRICT水平:从Predefined ConstantsE_ALL被定义为。

32767在PHP 5.4.x版本,30719在PHP 5.3.x,则应 6143在PHP 5.2.x,2047以前

+0

我看到这意味着常数值将改变随着版本的变化。我发现的价值是从http://www.w3schools.com/PHP/func_error_reporting.asp 他们是非常过时的,对吧? – bobo 2009-10-28 16:20:40

+11

w3schools可能有一些非常过时的信息。我总是会去php.net作为任何PHP相关的第一参考。 – cletus 2009-10-28 16:27:07

+3

在PHP 5.4中,'E_STRICT'包含在'E_ALL'中。 – kiamlaluno 2012-11-30 02:38:05

3

1 | 1 = 1

最简单的答案可能是目前没有理由将两者结合成按位或操作,但如果他们以后决定改变这些常数,那么可能会有。

编辑:你似乎已经拉出了这些常量的错误值,使整个问题没有想到。

+0

是的,我从http://www.w3schools.com/PHP/func_error_reporting.asp复制它们 – bobo 2009-10-28 16:21:22

1

从php.net:

在价值传递将显示每一个可能的错误,甚至当一个新的水平和常量在未来的PHP版本添加-1。从PHP 5.4起,E_ALL常量的行为也是如此。