首頁  >  文章  >  後端開發  >  error_reporting() 設定 PHP 的報錯級

error_reporting() 設定 PHP 的報錯級

WBOY
WBOY原創
2016-08-04 09:21:121238瀏覽

error_reporting(E_ALL ^ E_NOTICE ^ E_STRICT ^ E_DEPRECATED);
哥們們,幫我解釋下這行代碼是什麼意識,設定什麼報錯級別,

回覆內容:

error_reporting(E_ALL ^ E_NOTICE ^ E_STRICT ^ E_DEPRECATED);
哥們們,幫我解釋下這行代碼是什麼意識,設定什麼報錯級別,

查閱PHP官方文件就可以知道:error_reporting
上面的程式碼表示的意思是:除了E_NOTICE E_SCRICT E_DEPRECATED 之外的錯誤全部都報告。
E_ALL ^ E_NOTICE ^ E_STRICT ^ E_DEPRECATED這個是連續的異或操作。
E_ALL E_NOTICE E_STRICT E_DEPRECATED 這些都是常數,對應的二進位大致如下

<code>E_NOTICE 00001 
E_STRICT 00010
E_DEPRECATED 00100
E_ALL 11111
</code>

進行異或操作之後,相當於把相同的變成0 不同的變成1 也就是說得到的結果是E_ALL排除了進行異或操作的那幾個。
以上常數對應的值純屬虛構,具體可以試著印出來看下到底是多少。
同理也可以使用 E_NOTICE | E_STRICT這樣的方法來設定多個層級進行報告。原理是進行或操作之後有1則1,全0則0

這裡所代表是意思是:輸出所有類型的錯誤(E_ALL),但排除E_NOTICE、E_STRICT、E_DEPRECATED這幾種類型的錯誤。

這裡使用了一個位元運算的技巧,因為E_ALL是一個全1數,而E_NOTICE、E_STRICT、E_DEPRECATED都為單1數,這幾個異或一下,就形成了一個排除這幾項的日誌等級的數。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn