PHP orFail 特性。

2.0.0 2015-06-02 01:54 UTC

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 风格指南

谢谢。