astrotomic / php-conditional-proxy
此包提供了一个特质和类,允许根据条件调用方法而不中断方法链。
Requires
- php: ^7.1 || ^8.0
Requires (Dev)
- pestphp/pest: ^0.3.0
This package is auto-updated.
Last update: 2024-09-20 10:57:33 UTC
README
此包提供了一个特质和类,允许根据条件调用方法而不中断方法链。如果您只想在变量具有值时调用方法,这很有用。
安装
您可以通过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