modify
This commit is contained in:
+47
-52
@@ -13,63 +13,58 @@ class Reduce
|
||||
{
|
||||
|
||||
|
||||
/**
|
||||
* @param $last
|
||||
* @param $middleWares
|
||||
* @return mixed
|
||||
*/
|
||||
public static function reduce($last, $middleWares): mixed
|
||||
{
|
||||
return array_reduce(array_reverse($middleWares), static::core(), $last);
|
||||
}
|
||||
/**
|
||||
* @param $last
|
||||
* @param $middleWares
|
||||
* @return mixed
|
||||
*/
|
||||
public static function reduce($last, $middleWares): mixed
|
||||
{
|
||||
return array_reduce(array_reverse($middleWares), static::core(), $last);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $middleWares
|
||||
* @return mixed
|
||||
*/
|
||||
public static function after($middleWares): mixed
|
||||
{
|
||||
return array_reduce(array_reverse($middleWares), function ($stack, $pipe) {
|
||||
return function ($request, $passable) use ($stack, $pipe) {
|
||||
try {
|
||||
if (!($pipe instanceof After)) {
|
||||
return call_user_func($pipe, $request, $passable, $stack);
|
||||
}
|
||||
return $pipe->onHandler($request, $passable);
|
||||
} catch (\Throwable $throwable) {
|
||||
logger()->addError($throwable, 'throwable');
|
||||
return Json::to(0, $throwable);
|
||||
}
|
||||
};
|
||||
});
|
||||
}
|
||||
/**
|
||||
* @param $middleWares
|
||||
* @return mixed
|
||||
*/
|
||||
public static function after($middleWares): mixed
|
||||
{
|
||||
return array_reduce(array_reverse($middleWares), function ($stack, $pipe) {
|
||||
return function ($request, $passable) use ($stack, $pipe) {
|
||||
if (!($pipe instanceof After)) {
|
||||
return call_user_func($pipe, $request, $passable, $stack);
|
||||
}
|
||||
return $pipe->onHandler($request, $passable);
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return Closure
|
||||
*/
|
||||
private static function core(): Closure
|
||||
{
|
||||
return function ($stack, $pipe) {
|
||||
return static::passable($stack, $pipe);
|
||||
};
|
||||
}
|
||||
/**
|
||||
* @return Closure
|
||||
*/
|
||||
private static function core(): Closure
|
||||
{
|
||||
return function ($stack, $pipe) {
|
||||
return static::passable($stack, $pipe);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $stack
|
||||
* @param $pipe
|
||||
* @return Closure
|
||||
*/
|
||||
public static function passable($stack, $pipe): Closure
|
||||
{
|
||||
return function ($passable) use ($stack, $pipe) {
|
||||
if ($pipe instanceof Middleware) {
|
||||
return $pipe->onHandler($passable, $stack);
|
||||
}
|
||||
return call_user_func($pipe, $passable, $stack);
|
||||
};
|
||||
}
|
||||
/**
|
||||
* @param $stack
|
||||
* @param $pipe
|
||||
* @return Closure
|
||||
*/
|
||||
public static function passable($stack, $pipe): Closure
|
||||
{
|
||||
return function ($passable) use ($stack, $pipe) {
|
||||
if ($pipe instanceof Middleware) {
|
||||
return $pipe->onHandler($passable, $stack);
|
||||
}
|
||||
return call_user_func($pipe, $passable, $stack);
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user