From 117a04f8a1193d6bedd8a4ff22339c0428b6cc64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mr=C2=B7x?= Date: Tue, 20 Oct 2020 16:16:09 +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/Router.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/HttpServer/Route/Router.php b/HttpServer/Route/Router.php index 676620f4..b87ede6f 100644 --- a/HttpServer/Route/Router.php +++ b/HttpServer/Route/Router.php @@ -42,6 +42,8 @@ class Router extends Application implements RouterInterface public $useTree = false; + private $reading = false; + /** * @param Closure $middleware @@ -474,6 +476,9 @@ class Router extends Application implements RouterInterface public function dispatch() { try { + if ($this->reading) { + return send(self::NOT_FOUND, 404); + } /** @var Node $node */ if (!($node = $this->find_path(\request()))) { $response = send(self::NOT_FOUND, 404); @@ -485,10 +490,12 @@ class Router extends Application implements RouterInterface } catch (\Throwable $exception) { $response = send($this->exception($exception), 200); } finally { - if (!($node instanceof Node) || !$node->hasAfter()) { + if (!isset($node) || !($node instanceof Node)) { return; } - $node->afterDispatch($response ?? null); + if ($node->hasAfter()) { + $node->afterDispatch($response ?? null); + } } } @@ -595,6 +602,7 @@ class Router extends Application implements RouterInterface private function loadRouteDir($path) { $files = glob($path . '/*'); + $this->reading = true; for ($i = 0; $i < count($files); $i++) { if (is_dir($files[$i])) { $this->loadRouteDir($files[$i]); @@ -602,6 +610,7 @@ class Router extends Application implements RouterInterface $this->loadRouterFile($files[$i]); } } + $this->reading = false; }