On Mon, May 2, 2016 at 5:57 PM, Stephen Coakley <[email protected]> wrote:
> Could you use a closure instead to accomplish this? (Again yes, Sara could
> you clarify if this is permitted?)
>
> $ret = scandir($arg)
> |> array_filter($$, function($x) { return $x !== '.' && $x != '..';
> })
> |> array_map(function ($x) use ($arg) { return $arg . '/' . $x; },
> $$)
> |> (function($fileList) {
> if (someCheck($fileList)) {
> something();
> }
> return $fileList;
> })($$)
> |> getFileArg($$)
> |> array_merge($ret, $$);
>
You could, but IMO you lose a lot of the elegance if you go that
route. This syntax works best when you have a series of functions
which /don't/ have failure cases (and many many functions don't), or
who fail via exceptions.
Using current syntax, the above would look like:
$ret = array_merge($ret, getFileArg(function($fileList) {
if (someCheck($fileList)) { something(); }
return $fileList;
})(array_map(function($x) use ($arg) { return $arg . '/' . $x; },
array_filter(scandir($arg), function($x) { return $x !== '.' &&
$x !== '..'; }))
)));
It's way more readable in the pipe syntax version, but it's
overloading a single statement in both places.
-Sara
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php