Voting

: six minus four?
(Example: nine)

The Note You're Voting On

849330489 at qq dot com
5 years ago
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

<< Back to user notes page

To Top