jasonmccreary / orfail
PHP orFail 特性。
Requires
- php: >=5.4.0
Requires (Dev)
- phpunit/phpunit: ^4.6
This package is auto-updated.
Last update: 2024-09-06 17:49:04 UTC
README
OrFail 是一个简单的 特性,它使异常编程和编写更干净的代码变得更加容易。
通过 魔法方法,OrFail 允许您将 OrFail
追加到任何方法名称,并强制它在返回 falsey 值 时抛出异常。
没有 OrFail 的代码
public function someMethod() {
$value = $this->getValue();
if ($value === null) {
// failure code
}
return $value;
}
使用 OrFail 的相同代码
public function someMethod() {
return $this->getValueOrFail();
}
要求
- PHP >= 5.4.0
安装
推荐使用 Composer 安装 OrFail。
composer require "jasonmccreary/orfail"
或者您也可以下载此项目的 src
目录并将其包含到您的项目中。
使用方法
将 OrFail 包含到您的项目中后,您可以通过简单使用特性将其添加到任何类中。
例如
class Example {
use OrFail\Traits\OrFail;
public function someMethod() {
// code
}
}
现在您可以在任何方法后面追加 OrFail。如果该方法返回一个 falsey 值,将会抛出一个 FailingReturnValue
异常。
配置
OrFail 有两个方法您可以选择覆盖:orFailTest()
和 allowedOrFailMethods()
。
bool orFailTest ( mixed $value )
默认情况下,orFailTest()
简单地检查 $value
是否是 falsey。您可以通过重写此方法来自定义失败测试。
array allowedOrFailMethods ( void )
默认情况下,allowedOrFailMethods()
返回一个空数组,允许所有方法。您可以通过重写此方法并返回允许追加 OrFail
的方法名称数组来限制哪些方法可以追加 OrFail
。
故障排除
由于 OrFail 使用魔法方法,如果不小心,很容易创建无限调用循环。这通常会导致 PHP 耗尽内存或出现 Segmentation Fault 11。
如果您想在实现 __call()
的类中使用 OrFail 特性,您需要手动解决冲突。
例如
class YourClass {
use OrFail\Traits\OrFail {
OrFail::__call as __callOrFail;
}
public function __call($name, $parameters) {
// your code
$this->__callOrFail($name, $parameters);
// your code
}
}
注意: 这只是一个解决冲突的示例。您如何调用 OrFail 将取决于您的代码。
贡献
OrFail 是一个新包,需要与其他使用 __call()
的包和代码库进行更多集成测试。请通过创建 问题 报告任何问题。
如果您计划提交 Pull Request,请确保您遵循 PSR-2 风格指南。
谢谢。