This commit is contained in:
2020-09-08 11:53:09 +08:00
parent 76ed7406b4
commit 215d5517c6
5 changed files with 81 additions and 31 deletions
+40
View File
@@ -0,0 +1,40 @@
<?php
namespace HttpServer\Route;
use Closure;
class Reduce
{
/**
* @param $last
* @param $middleWares
* @return mixed|null
*/
public static function reduce($last, $middleWares)
{
return array_reduce(array_reverse($middleWares), static::core(), $last);
}
/**
* @return Closure
*/
private static function core()
{
return function ($stack, $pipe) {
return function ($passable) use ($stack, $pipe) {
if ($pipe instanceof \HttpServer\IInterface\Middleware) {
return $pipe->handler($passable, $stack);
} else {
return $pipe($passable, $stack);
}
};
};
}
}