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
广告