2009-10-28 28 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常量的行爲也是如此。

相關問題