This commit is contained in:
2025-12-30 21:07:31 +08:00
parent 30cc98c00c
commit 44f8bc6535
2 changed files with 20 additions and 13 deletions
+15 -5
View File
@@ -4,6 +4,7 @@ declare(strict_types=1);
namespace Kiri\Router\Base; namespace Kiri\Router\Base;
use Kiri\Router\Handler; use Kiri\Router\Handler;
use Kiri\Router\Validator\ValidatorMiddleware;
use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface; use Psr\Http\Server\MiddlewareInterface;
@@ -15,6 +16,9 @@ abstract class AbstractHandler
public int $offset = 0; public int $offset = 0;
private ?ValidatorMiddleware $middleware = null;
/** /**
* @param array $middlewares * @param array $middlewares
* @param Handler $handler * @param Handler $handler
@@ -34,7 +38,6 @@ abstract class AbstractHandler
*/ */
public function execute(ServerRequestInterface $request): ResponseInterface public function execute(ServerRequestInterface $request): ResponseInterface
{ {
var_dump($this->middlewares);
if (!isset($this->middlewares[$this->offset])) { if (!isset($this->middlewares[$this->offset])) {
return $this->handler->handle($request); return $this->handler->handle($request);
} }
@@ -42,11 +45,18 @@ abstract class AbstractHandler
$middleware = $this->middlewares[$this->offset]; $middleware = $this->middlewares[$this->offset];
$this->offset += 1; $this->offset += 1;
// if (!($middleware instanceof MiddlewareInterface)) {
// $middleware = \Kiri::getDi()->get($middleware);
// }
return $middleware->process($request, $this); return $middleware->process($request, $this);
} }
/**
* @param ValidatorMiddleware $middleware
* @return void
*/
public function withValidatorMiddleware(ValidatorMiddleware $middleware): void
{
// $this->middleware = $middleware;
}
} }
+5 -8
View File
@@ -211,19 +211,16 @@ class Router
foreach ($router->getMethods() as $name => $method) { foreach ($router->getMethods() as $name => $method) {
$middlewares = $method->getMiddlewares(); $middlewares = $method->getMiddlewares();
foreach ($middlewares as $key=>$middleware) { foreach ($middlewares as $key => $middleware) {
$middlewares[$key] = di($middleware); $middlewares[$key] = di($middleware);
} }
var_dump(sprintf('%s::%s(%s)', $method->getClass(), $method->getMethod(), json_encode($middlewares, JSON_UNESCAPED_UNICODE))); $requestHandler = new HttpRequestHandler($middlewares, $method);
$validator = MiddlewareManager::getValidator($method->getClass(), $method->getMethod());
$validator = MiddlewareManager::getValidator($method->getClass(), $method->getMethod());
if (!is_null($validator)) { if (!is_null($validator)) {
$middlewares[] = new ValidatorMiddleware(di(ResponseInterface::class), $method->getClass(), $method->getMethod()); $requestHandler->withValidatorMiddleware(new ValidatorMiddleware(di(ResponseInterface::class), $method->getClass(), $method->getMethod()));
} }
$router->setHttpHandler($name, $requestHandler);
$router->setHttpHandler($name, new HttpRequestHandler($middlewares, $method));
} }
} }