PHP Expectations
Expectations 是对旧版 assert() 函数的向后兼容增强。Expectations 允许在生产代码中使用零成本断言,并在断言失败时抛出自定义异常。
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 − 在 PHP 7 中,第二个参数可以是 Throwable 对象而不是描述性字符串,在这种情况下,如果断言失败且 assert.exception 配置指令启用,则抛出该对象。
返回值
如果断言为假则返回 FALSE,否则返回 TRUE。
示例
查看以下示例 —
<?php
ini_set('assert.exception', 1);
class CustomError extends AssertionError {}
assert(false, new CustomError('自定义错误消息!'));
?>
它将产生以下 输出 —
PHP Fatal error: Uncaught CustomError: Custom Error Message! In test.php:6