PHP 7 - Expectations

Expectations 是旧版assert()函数的向后兼容增强功能. Expectation允许在生产代码中进行零成本断言,并提供在断言失败时抛出自定义异常的能力. assert()现在是一种语言结构,其中第一个参数是一个表达式,与要测试的字符串或布尔值相比.

assert()的配置指令

指令默认值可能的值
zend.assertions 1

1 : 生成并执行代码(开发模式)

0 : 生成代码但在运行时跳转它

-1 : 不生成代码(生产模式)

assert.exception 0

1 : 当断言失败时抛出,抛出作为异常提供的对象,或者如果未提供异常则抛出新的 AssertionError 对象.

0 : 如上所述使用或生成Throwable,但只生成基于该对象的警告而不是抛出它(与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!'));
?>

它产生以下浏览器输出 :

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