繁体   English   中英

方法链接中的“管道”方法

[英]“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'); 

所以我的问题是:

  1. 真的有用吗? 我在深夜实施了这些东西,但仍然不确定。

  2. 会是“自行车”吗? 这样的东西可能存在于另一个语言/框架中吗?

根据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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM