PHP7期望


期望是向後相容的增強到舊 assert() 函式。期望允許在生產程式碼零成本的斷言,並提供在斷言失敗時丟擲自定義異常的能力。assert() 不是一種語言構建體,其中第一個引數是一個表示式的比較字串或布林用於測試。

組態指令assert()

指令 預設值 
可能的值
zend.assertions 1
  • 1 - 生成並執行程式碼(開發模式)

  • 0 - 生成程式碼,但它在執行時

  • -1 - 不生成程式碼(生產模式)

assert.exception 0
  • 1 - 當斷言失敗時丟擲,要麼丟擲的異常,或者通過丟擲一個新的 AssertionError 物件提供的物件,如果沒有提供異常

  • 0 - 使用或與上述生成的Throwable,但只能根據該物件的警告,而不是(與PHP 5相容的行為)把它丟擲

引數

  • assertion - 斷言。在PHP 5中,這必須是要計算一個字串或要測試一個布林值。 在PHP中7,這也可能是一個返回值的表示式,將執行和使用的結果,以指示斷言是成功還是失敗。

  • description - 一個可選的描述,如果斷言失敗,將包括失敗訊息。

  • exception-在PHP7,第二個引數可以是一個 Throwable 物件,而不是一個描述字串,在這種情況下,這是如果斷言失敗和assert.exception組態指令啟用將丟擲的物件。

返回值

如果斷言為假為FALSE,否則為TRUE。

範例

<?php
ini_set('assert.exception', 1);

class CustomError extends AssertionError {}

assert(false, new CustomError('Custom Error Message!'));
?>

這將在瀏覽器產生以下輸出 -

Fatal error: Uncaught CustomError: Custom Error Message! in...