PHP 7 Expectations
PHP 7 Expectations
expectations是对旧版本的assert()函数的向后兼容增强。expection允许在生产代码中使用零成本断言,并提供了在断言失败时引发自定义异常的能力。assert()现在是一种语言构造,其中第一个参数是表达式,而不是要测试的字符串或布尔值。
assert()的配置指令
指令 | 默认值 | 可选参数 |
zend.assertions | 1 | 1:生成并执行代码(开发模式) 0:生成代码,但在运行时绕过它 -1:不要生成代码(生产模式) |
assert.exception | 0 | 1:当断言失败时引发,方法是引发作为异常提供的对象,或者在未提供异常的情况下引发新的assessionerror对象。 0:使用或生成如上所述的可投掷对象,但仅基于该对象生成警告,而不是投掷该对象(与PHP 5行为兼容) |
参数
assertion:在PHP 5中,它必须是要评估的字符串或要测试的布尔值。在PHP 7中,这也可以是返回值的任何表达式,该值将被执行,并且结果用于指示断言是成功还是失败。
description: 如果断言失败,将包括在失败消息中的可选描述。
exception:在PHP 7中,第二个参数可以是可掷回的对象,而不是描述性字符串,在这种情况下,如果断言失败并且启用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...