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;
use Kiri\Router\Handler;
use Kiri\Router\Validator\ValidatorMiddleware;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
@@ -15,6 +16,9 @@ abstract class AbstractHandler
public int $offset = 0;
private ?ValidatorMiddleware $middleware = null;
/**
* @param array $middlewares
* @param Handler $handler
@@ -34,7 +38,6 @@ abstract class AbstractHandler
*/
public function execute(ServerRequestInterface $request): ResponseInterface
{
var_dump($this->middlewares);
if (!isset($this->middlewares[$this->offset])) {
return $this->handler->handle($request);
}
@@ -42,11 +45,18 @@ abstract class AbstractHandler
$middleware = $this->middlewares[$this->offset];
$this->offset += 1;
// if (!($middleware instanceof MiddlewareInterface)) {
// $middleware = \Kiri::getDi()->get($middleware);
// }
return $middleware->process($request, $this);
}
/**
* @param ValidatorMiddleware $middleware
* @return void
*/
public function withValidatorMiddleware(ValidatorMiddleware $middleware): void
{
// $this->middleware = $middleware;
}
}
+4 -7
View File
@@ -211,19 +211,16 @@ class Router
foreach ($router->getMethods() as $name => $method) {
$middlewares = $method->getMiddlewares();
foreach ($middlewares as $key=>$middleware) {
foreach ($middlewares as $key => $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());
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, new HttpRequestHandler($middlewares, $method));
$router->setHttpHandler($name, $requestHandler);
}
}