note 124289 added to function.array-reduce

From: 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

« previous php.notes (#212578) next »