From ca554c4f5f253bb9d9b271d5d6d961d70d499b33 Mon Sep 17 00:00:00 2001 From: "as2252258@163.com" Date: Mon, 20 Sep 2021 03:09:00 +0800 Subject: [PATCH] 111 --- http-handler/Abstracts/MiddlewareManager.php | 38 +++++++------------- 1 file changed, 13 insertions(+), 25 deletions(-) diff --git a/http-handler/Abstracts/MiddlewareManager.php b/http-handler/Abstracts/MiddlewareManager.php index 7a57249b..7ab95d9e 100644 --- a/http-handler/Abstracts/MiddlewareManager.php +++ b/http-handler/Abstracts/MiddlewareManager.php @@ -29,17 +29,22 @@ class MiddlewareManager extends BaseObject if (is_object($class)) { $class = $class::class; } - if (!isset(static::$_middlewares[$class . '::' . $method])) { - static::$_middlewares[$class . '::' . $method] = []; + if (!isset(static::$_middlewares[$class])) { + static::$_middlewares[$class] = []; } - if (is_string($middlewares) && !in_array($middlewares, static::$_middlewares[$class . '::' . $method])) { - static::$_middlewares[$class . '::' . $method][] = $middlewares; + if (!isset(static::$_middlewares[$class][$method])) { + static::$_middlewares[$class][$method] = []; + } + + $source = &static::$_middlewares[$class][$method]; + if (is_string($middlewares) && !in_array($middlewares, $source)) { + $source[] = $middlewares; } else { foreach ($middlewares as $middleware) { - if (in_array($middleware, static::$_middlewares[$class . '::' . $method])) { + if (in_array($middleware, $source)) { continue; } - static::$_middlewares[$class . '::' . $method][] = $middleware; + $source[] = $middleware; } } return true; @@ -52,28 +57,11 @@ class MiddlewareManager extends BaseObject */ public static function get($handler): mixed { - if ($handler instanceof Closure) { + if ($handler instanceof Closure || !isset(static::$_middlewares[$handler[0]])) { return null; } - [$class, $method] = [$handler[0], $handler[1]]; - if (!static::hasMiddleware($class, $method)) { - return null; - } - return static::$_middlewares[$class . '::' . $method]; + return static::$_middlewares[$handler[0]][$handler[1]] ?? null; } - /** - * @param $class - * @param $method - * @return bool - */ - public static function hasMiddleware($class, $method): bool - { - if (is_object($class)) { - $class = $class::class; - } - return isset(static::$_middlewares[$class . '::' . $method]); - } - }