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; }