webmozart/assert 的包装器,使其不仅限于检查方法参数

v1.3.1 2024-09-12 09:51 UTC

README

Build Status Scrutinizer Code Quality Coverage Status PHPStan Enabled

背景

webmozart/assert 的包装器,使其不仅限于检查方法参数。提出这个分支的主要原因之一是我们需要能够抛出自定义异常,而不是将所有内容都抛出为通用的 InvalidArgumentException

通过使用 __callStatic 包装器,我们能够包装 webmozart 方法,允许额外的 exception 参数,并通过原始库捕获 InvalidArgumentException,然后抛出所需的异常,或者回退到我们自定义的 AssertionFailedException

在实践中,这意味着原始库提供的所有断言都可以使用并提供额外的参数。如果你提供了它,并且它转换为一个 Throwable 类,那么当断言失败时,将抛出该类。如果你没有传递额外参数,我们将抛出更通用的 AssertionFailedException(在我们看来,这仍然比更通用的 InvalidArgumentException 要好)。

我们还认为在这种情况下使用 InvalidArgumentException 是不正确的。PHP 将此异常的意图是当函数参数类型错误时抛出。因此,我们的自定义 AssertionFailedException 继承自 UnexpectedValueException,后者意图用于验证值是否与有效值集匹配,可能在函数的内部计算过程中。我们认为这更适合在断言中使用。

自定义断言

分支的另一个原因是能够添加一些可能仅适用于 XML / SAML2 相关事物的自定义断言。

目前,此库提供以下附加断言

断言