PHP Expectations 怎么用?

文章导读
Previous Quiz Next Expectations 是对旧版 assert() 函数的向后兼容增强。Expectations 允许在生产代码中使用零成本断言,并在断言失败时抛出自定义异常。
📋 目录
  1. assert() 的配置指令
A A

PHP Expectations



Previous
Quiz
Next

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