[英]“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.