[英]“Piping” methods in methods chaining
最近我为yii实现了此行为: https : //github.com/garex/yii-pipe-behavior
它的主要目的是允许方法链接为吸气剂的方法。 这种风格的东西可以用任何其他语言/框架来实现。 它更像是方法链式方法的语法糖。
从自述文件:
例如owner具有方法gimmeAll ,该方法返回要由另一个所有者的方法转换的数组,将其设为toSomething 。 在旧样式中,我们称:
$bla = Something::create()->toSomething(Something::create()->one()->two()->three()->gimmeAll());
但是通过这种行为,我们可以以更优雅的方式做到这一点:
$bla = Something::create()->one()->two()->three()->pipe('gimmeAll')->unpipe('toSomething', '{r}');
如果unpiped方法具有单个参数,那么我们可以省略'{r}'参数,并按如下方式调用它:
$bla = Something::create()->one()->two()->three()->pipe('gimmeAll')->unpipe('toSomething');
真的有用吗? 我在深夜实施了这些东西,但仍然不确定。
会是“自行车”吗? 这样的东西可能存在于另一个语言/框架中吗?
根据yii论坛中线程的结果和答案
不,它没有用,甚至是多余的。 那里的一些报价:
我认为将结果保存到变量中并将其传递给另一种方法更简洁,易读,并得到IDE的更好支持,并且更加理智。
class Something
{
public function gimmeAllToSomething()
{
return $this->toSomething($this->gimmeAll());
}
}
$bla = Something::create()->one()->two()->tree()->gimmeAllToSomething();
键入和测试的代码要多一些,但是最佳编程实践并不是要减少打字量。
目前,在实际场景中,我还使用了gimmeAllToSomething()方法。 因此,我们可以将其视为不需要走的门。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.