astrotomic/php-conditional-proxy

此包提供了一个特质和类,允许根据条件调用方法而不中断方法链。

0.2.1 2021-01-04 15:25 UTC

README

Latest Version MIT License Offset Earth Larabelles

GitHub Workflow Status StyleCI Total Downloads

此包提供了一个特质和类,允许根据条件调用方法而不中断方法链。如果您只想在变量具有值时调用方法,这很有用。

安装

您可以通过composer安装此包

composer require astrotomic/php-conditional-proxy

用法

最简单的方法是使用\Astrotomic\ConditionalProxy\HasConditionalCalls特质,它添加了一个when()方法。\Astrotomic\ConditionalProxy\ConditionalProxy是为了与返回$this的方法一起使用而设计的,否则您可能会得到意外的结果和错误的代码补全。

use Astrotomic\ConditionalProxy\HasConditionalCalls;

class MyClass
{
    use HasConditionalCalls;
}

条件链式方法

您可以通过只传递条件和调用链式方法来调用when()方法,如果条件为true

// foo() bar() baz() will be called
$class->foo()->when(true)->bar()->baz();

// foo() baz() will be called
$class->foo()->when(false)->bar()->baz();

条件回调

如果您愿意,也可以将回调函数作为when()方法的第二个参数传递。

// foo() bar() baz() will be called
$class->foo()->when(true, fn($self) => $self->bar())->baz();

// foo() baz() will be called
$class->foo()->when(false, fn($self) => $self->bar())->baz();

高级用法

如果您已经有了if()when()方法并想对其进行扩展或在任何其他方法中实现此行为,您可以自己初始化并返回\Astrotomic\ConditionalProxy\ConditionalProxy

use Astrotomic\ConditionalProxy\ConditionalProxy;

class MyClass
{
    public function if($condition)
    {
        return new ConditionalProxy($this, $condition);
    }

    public function foo($foo)
    {
        $this->foo = $foo;

        return $this;
    }
}

测试

composer test

变更日志

请参阅CHANGELOG以获取有关最近更改的更多信息。

贡献

请参阅CONTRIBUTING以获取详细信息。您也可能对行为准则感兴趣。

安全性

如果您发现任何与安全相关的问题,请参阅SECURITY以获取报告步骤。

鸣谢

许可

MIT许可(MIT)。请参阅许可文件以获取更多信息。

开源软件

您可以使用此包,但如果它进入了您的生产环境,我将非常感激您为世界买一棵树。

众所周知,应对气候变化和防止气温上升超过1.5C的最好工具之一是种树。如果您为我的森林做出贡献,您将为当地家庭创造就业机会并恢复野生动物栖息地。

您可以在offset.earth/treeware购买树木。

有关Treeware的更多信息,请访问treeware.earth