note 124289 added to function.array-reduce
| From: | 849330489 at qq dot com | Date: | Sat, 12 Oct 2019 01:33:33 +0000 |
| Subject: | note 124289 added to function.array-reduce | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-212578@lists.php.net to get a copy of this message | ||
The first parameter $array can be also be functions, which produces very interesting and powerful
result, which can be used to make an union of middlewares.
<?php
$f1 = function($x, $f){
echo 'middleware 1 begin.'.PHP_EOL;
$x += 1;
$x = $f($x);
echo 'middleware 1 end.'.PHP_EOL;
return $x;
};
$f2 = function($x, $f){
echo 'middleware 2 begin: '.PHP_EOL;
$x += 2;
$x = $f($x);
echo 'middleware 2 end.'.PHP_EOL;
return $x;
};
$respond = function($x){
echo 'Generate some response.'.PHP_EOL;
return $x;
};
$middlewares = [$f1, $f2];
$initial = $respond;
$foo = array_reduce($middlewares, function($stack, $item){
return function($request) use ($stack, $item){
return $item($request, $stack);
};
}, $initial);
$x = 1;
echo $foo($x);
?>
//output:
middleware 2 begin:
middleware 1 begin.
Generate some response.
middleware 1 end.
middleware 2 end.
4
----
Server IP: 208.43.231.9
Probable Submitter: 185.85.3.168 (proxied: 223.255.127.38)
----
Manual Page -- http://php.net/manual/en/function.array-reduce.php
Edit -- https://master.php.net/note/edit/124289
Del: integrated -- https://master.php.net/note/delete/124289/integrated
Del: useless -- https://master.php.net/note/delete/124289/useless
Del: bad code -- https://master.php.net/note/delete/124289/bad+code
Del: spam -- https://master.php.net/note/delete/124289/spam
Del: non-english -- https://master.php.net/note/delete/124289/non-english
Del: in docs -- https://master.php.net/note/delete/124289/in+docs
Del: other reasons-- https://master.php.net/note/delete/124289
Reject -- https://master.php.net/note/reject/124289
Search -- https://master.php.net/manage/user-notes.php