Re: Pipe Operator v2
| From: | Rowan Collins | Date: | Thu, 21 Jul 2016 21:56:45 +0000 |
| Subject: | Re: Pipe Operator v2 | ||
| References: | 1 2 3 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-94621@lists.php.net to get a copy of this message | ||
On 21/07/2016 22:28, Sara Golemon wrote:
Are you picturing the return statement returning from the current function? Or "returning" from the current pipe chain? I think you mean the former, in which case I'd ask how that'd better/worse than: return foo() |> bar($$);I do indeed mean returning from the current function. I went into more detail (perhaps too much!) on the previous thread, but the basic premise is the pipe operator gives you code that reads left to right. Adding an element where you have to jump back to the beginning of the expression feels like it defeats that. You picked an example with a very short pipeline, and the "return" is fairly obvious; but then "return bar(foo());" is not a great candidate for using the operator in the first place. Take a longer example: return loadConfig() |> buildDic($$) |> getApp($$) |> getRouter($$) |> getDispatcher($$, $request) |> dispatchBusinessLogic($$, $request, new Response()) |> renderResponse($$) |> buildPsr7Response($$) |> emit($$); If you read through that pipeline, you get down to emit($$), and then have to scan back up to figure out where result of that is going to end up. Compare: loadConfig() |> buildDic($$) |> getApp($$) |> getRouter($$) |> getDispatcher($$, $request) |> dispatchBusinessLogic($$, $request, new Response()) |> renderResponse($$) |> buildPsr7Response($$) |> emit($$) |> return $$; Here you can read through all the steps in order, right up to the last action, which is returning the resulting value. Even the name "pipe" is suggesting that something goes in one end, and comes out the other, so having the output pop out next to the input just feels weird. Regards, -- Rowan Collins [IMSoP]