thejawker / chainable
暴露一个类,使方法链调用更加流畅和简单。
0.0.5
2017-12-13 08:15 UTC
Requires
- php: >=7.0.0
Requires (Dev)
- orchestra/testbench: ~3.5.0
- phpunit/phpunit: ^6.2
README
你是否厌倦了使用需要你编写如下代码的包?
$someClass = new SomeClass(); $someClass->someMethod(); $someClass->someOtherMethod(); // Now you can just write it like this. new Chain(SomeClass::class) ->someMethod() ->someOtherMethod(); // Or even easier ch(SomeClass::class) ->someMethod() ->someOtherMethod();
安装
通过 Composer 需求此包
composer require thejawker/chainable
用法
基本用法
你可以根据喜好或需求,以两种简单的方式使用 Chain。
// Through passing the Class's classname. $someClass = new Chain(SomeClass::class); // Or through passing the actual instance $someClass = new Chain(new SomeClass($withParams))
获取属性
获取属性与之前相同,这些不会返回 $this
。
$property = new Chain(SomeClass::class)->property;
跳出链式调用
通常方法需要返回实际值,否则我们可以停止编程。Chain 允许你轻松关闭链式调用行为。这可以非常容易地完成。
$someClass = new Chain(SomeClass::class)->someMethod() $property = $someClass->escape()->getValue() // will return the original value
你也可以取消跳出来恢复 Chainable 功能。说实话,我还没有找到这个用例,但嘿!谁知道呢!
$someClass = new Chain(SomeClass::class)->someMethod(); $sameInstance = $someClass->escape(); $sameInstance->unescape()->otherMethod();
获取原始实例
有时需要返回原始实例,因为某些代码可能正在检查它是否为类的 instanceof
。你可以在那里轻松链式调用 ->instance()
方法,并返回原始实例,而不是克隆,是实际的东西。注意:从这里无法返回。
public function calculate() { return new Chain(new LegacyClass) ->someMethod() ->setSome('stuff') ->maybeMore() ->instance(); }
想成为专业人士吗?
我还为那些认为实例化 Chain
是太多工作的朋友提供了一个方便的快捷方式。以下将产生完全相同的结果,但更容易。
ch(LegacyClass::class) ->also() ->works('yay!') ->fuckYess();
测试
我包括了一些测试,如果你看到有改进的空间,请随意发送 pull-requests。
composer test
许可
MIT 许可证 (MIT)。请参阅 许可文件 获取更多信息。