1. 程式人生 > >簡述 assert 和 eval 的區別

簡述 assert 和 eval 的區別

       首先和大家說明,我所理解的也是在網上查詢資料,總結下來的。我儘可能說的通俗易懂一些,看網上的資料,發現很多高大上的東西,我對PHP理解很淺,望大家批評指正。(我所理解的對於初學者夠用了)

       相同點:二者都可以執行PHP語句。只不過是,eval規範更加嚴格一些,必須符合PHP程式碼要求。而assert則沒有那麼嚴格,執行PHP表示式即可。並不是對assert無計可施,可以採用assert_option()來進行對assert的控制。但是在生產環境強烈建議不使用assert函式(哪怕對其限制,也並不安全)。

       不同點:

       eval():該函式對於在資料庫文字欄位中供日後計算而進行的程式碼儲存很有用。(在生產中也建議少用) 注意:1.eval()裡必須是字串;2.eval()裡的引號必須是雙引號,因為單引號不能解析字串裡的變數$str;        eval定義和用法: (1)eval() 函式把字串按照 PHP 程式碼來計算(計算=執行)。 (2)該字串必須是合法的 PHP 程式碼,且必須以分號結尾。 (3)如果沒有在程式碼字串中呼叫 return 語句,則返回 NULL。如果程式碼中存在解析錯誤,則 eval() 函式返回 false。

       在程式的執行過程中呼叫assert()來進行判斷表示式,遇到false時程式也是會繼續執行的,這在生產環境中這樣使用是不好的,而 在開發除錯環境中,卻是一種debug的不錯的方式。特別是用上callback的方法,可以知道具體的出錯資訊。所以,php的官方文件裡頭是建議將assert用來進行debug,我們可以發現還有一個開關ASSERT_ACTIVE可以用來控制是否開啟debug。

       給大家簡單說了一下eval和assert的區別,望大家批評指正,共同學習。