PHP – 預期



預期是對舊的assert()函式向後相容的增強。預期允許在生產程式碼中進行零成本斷言,並在斷言失敗時提供丟擲自定義異常的能力。

assert()現在是一個語言結構,其中第一個引數是一個表示式,而不是要測試的字串或布林值。

assert() 的配置指令

下表列出了 assert() 函式的配置指令:

指令 預設值 可能的值
zend.assertions 1

1 - 生成並執行程式碼(開發模式)

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

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

assert.exception 0

1 - 當斷言失敗時丟擲異常,方法是丟擲作為異常提供的物件,或者如果未提供異常則丟擲新的AssertionError物件。

0 - 使用或生成如上所述的可丟擲物件,但僅根據該物件生成警告而不是丟擲它(與 PHP 5 行為相容)

引數

  • 斷言 - 斷言。在 PHP 5 中,這必須是待評估的字串或待測試的布林值。在 PHP 7 中,這也可以是返回值的任何表示式,該表示式將被執行,其結果用於指示斷言成功還是失敗。

  • 描述 - 如果斷言失敗,則包含在失敗訊息中的可選描述。

  • 異常 - 在 PHP 7 中,第二個引數可以是 Throwable 物件而不是描述性字串,在這種情況下,如果斷言失敗且啟用了 assert.exception 配置指令,則這是將要丟擲的物件。

返回值

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

示例

看看下面的例子:

<?php
   ini_set('assert.exception', 1);
   class CustomError extends AssertionError {}
   assert(false, new CustomError('Custom Error Message!'));
?>

它將產生以下輸出

PHP Fatal error:  Uncaught CustomError: Custom Error Message! In test.php:6
廣告