预期(Expectations ) 是旧 assert() 函数的向后兼容增强功能。Expectation 允许在生产代码中使用零成本 断言(Assertion ) ,并提供在断言失败时引发自定义异常的功能。
assert() 现在是一种语言结构,其中第一个参数是一个表达式,而不是要测试的字符串或布尔值。
assert() 配置指令
下表列出了 assert() 函数的配置指令 -
指令 | 默认值 | 可能的值 |
---|---|---|
zend.assertions | 1 | 1 – 生成和执行代码(开发模式) 0 − 生成代码,但在运行时跳转代码 -1 − 不生成代码(生产模式) |
assert.exception | 0 | 1 − throw,当断言失败时,通过抛出作为异常提供的对象,或者如果未提供 exception,则抛出新的 AssertionError 对象。 0 − 如上所述使用或生成 Throwable,但只根据该对象生成警告,而不是 throw 它(与 PHP 5 行为兼容) |
参数
参数 | 描述 |
---|---|
Assertion | 断言。在 PHP 5 中,这必须是一个要计算的字符串或一个要测试的布尔值。在 PHP 7 中,这也可以是任何返回值的表达式,该值将被执行,结果用于指示 Assertion 是成功还是失败。 |
Description | 如果 Assertion 失败,则失败消息中将包含的可选描述。 |
Exception | 在 PHP 7 中,第二个参数可以是 Throwable 对象,而不是描述性字符串,在这种情况下,如果Assertion 失败并且启用了 assert.exception 配置指令,则这是将要抛出的对象。 |
返回值
如果 Assertion 为 false,则为 FALSE,否则为 TRUE。
例子
请看下面的例子 -
<?php
ini_set('assert.exception', 1);
class CustomError extends AssertionError {}
assert(false, new CustomError('自定义错误消息!'));
?>
它将产生以下输出 -
PHP Fatal error: Uncaught CustomError: 自定义错误消息! In test.php:6