From 7b490faee609501afa641ee00ab72aff8928e9b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mr=C2=B7x?= Date: Mon, 7 Sep 2020 17:19:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HttpServer/Route/Annotation/Annotation.php | 25 +++++++++++++++++++++- HttpServer/Route/Middleware.php | 4 ++-- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/HttpServer/Route/Annotation/Annotation.php b/HttpServer/Route/Annotation/Annotation.php index 9fb1cc76..27a02fc1 100644 --- a/HttpServer/Route/Annotation/Annotation.php +++ b/HttpServer/Route/Annotation/Annotation.php @@ -3,6 +3,8 @@ namespace HttpServer\Route\Annotation; +use HttpServer\IInterface\Interceptor; +use HttpServer\IInterface\Limits; use HttpServer\Route\Node; use ReflectionClass; use ReflectionException; @@ -105,7 +107,6 @@ class Annotation extends \Snowflake\Annotation\Annotation } - /** * @param Node $node * @param $annotation @@ -142,6 +143,17 @@ class Annotation extends \Snowflake\Annotation\Annotation [$keyName, $matchs] = $annotation; foreach ($explode as $middleware) { + $middleware = 'App\Http\Interceptor\\' . $middleware; + if (!class_exists($middleware)) { + continue; + } + $middleware = Snowflake::createObject($middleware); + if (!($middleware instanceof Interceptor)) { + continue; + } + $node->addInterceptor([$middleware, 'Interceptor']); + continue; + $params = [$keyName, [$matchs[0], $matchs[1], $middleware]]; $node->addInterceptor($this->pop($this->getName(...$params))); } @@ -163,6 +175,17 @@ class Annotation extends \Snowflake\Annotation\Annotation [$keyName, $matchs] = $annotation; foreach ($explode as $middleware) { + $middleware = 'App\Http\Limits\\' . $middleware; + if (!class_exists($middleware)) { + continue; + } + $middleware = Snowflake::createObject($middleware); + if (!($middleware instanceof Limits)) { + continue; + } + $node->addLimits([$middleware, 'next']); + continue; + $params = [$keyName, [$matchs[0], $matchs[1], $middleware]]; $node->addLimits($this->pop($this->getName(...$params))); } diff --git a/HttpServer/Route/Middleware.php b/HttpServer/Route/Middleware.php index 99f28dba..d606c937 100644 --- a/HttpServer/Route/Middleware.php +++ b/HttpServer/Route/Middleware.php @@ -70,7 +70,7 @@ class Middleware return $this->annotation_limit($node, $middleWares); } foreach ($node->getInterceptor() as $item) { - $middleWares[] = $item[0]; + $middleWares[] = $item; } return $this->annotation_limit($node, $middleWares); } @@ -87,7 +87,7 @@ class Middleware return $middleWares; } foreach ($node->getLimits() as $item) { - $middleWares[] = $item[0]; + $middleWares[] = $item; } return $middleWares; }