簡體   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