8 Commits

Author SHA1 Message Date
as2252258 5bda66b40d eee 2024-11-18 17:05:21 +08:00
as2252258 e82fad2fcb eee 2024-11-18 17:02:58 +08:00
as2252258 16eb6b11c5 eee 2024-11-18 16:11:16 +08:00
as2252258 227b6fa512 eee 2024-11-18 16:09:59 +08:00
as2252258 c06ab29054 eee 2024-11-18 14:21:43 +08:00
as2252258 3ccf08fdfb eee 2024-11-15 14:24:57 +08:00
as2252258 292ccc84de eee 2024-11-15 14:18:20 +08:00
as2252258 edc7371d9b eee 2024-11-15 14:16:37 +08:00
2 changed files with 17 additions and 20 deletions
+8 -18
View File
@@ -4,6 +4,8 @@ declare(strict_types=1);
namespace Kiri\Router; namespace Kiri\Router;
use Kiri\Abstracts\CoordinatorManager;
use Kiri\Coordinator;
use Kiri\Di\Inject\Container; use Kiri\Di\Inject\Container;
use Kiri\Di\Context; use Kiri\Di\Context;
use Kiri\Di\Interface\ResponseEmitterInterface; use Kiri\Di\Interface\ResponseEmitterInterface;
@@ -73,12 +75,14 @@ class OnRequest implements OnRequestInterface
*/ */
public function onRequest(Request $request, Response $response): void public function onRequest(Request $request, Response $response): void
{ {
/** @var CQ $PsrRequest */
try { try {
$PsrRequest = $this->initRequestAndResponse($request); /** @var CQ $PsrRequest */
Context::set(ResponseInterface::class, new ConstrictResponse($this->response->contentType));
$PsrRequest = Context::set(RequestInterface::class, CQ::builder($request));
$PsrResponse = $this->router->query($request->server['path_info'], $request->getMethod()) CoordinatorManager::utility(Coordinator::WORKER_START)->yield();
->run($PsrRequest);
$PsrResponse = $this->router->query($request->server['path_info'], $request->getMethod())->run($PsrRequest);
} catch (Throwable $throwable) { } catch (Throwable $throwable) {
$PsrResponse = $this->exception->emit($throwable, $this->constrictResponse); $PsrResponse = $this->exception->emit($throwable, $this->constrictResponse);
} finally { } finally {
@@ -86,18 +90,4 @@ class OnRequest implements OnRequestInterface
} }
} }
/**
* @param Request $request
* @return ServerRequestInterface
*/
public function initRequestAndResponse(Request $request): ServerRequestInterface
{
$response = new ConstrictResponse($this->response->contentType);
Context::set(ResponseInterface::class, $response);
return Context::set(RequestInterface::class, CQ::builder($request));
}
} }
+9 -2
View File
@@ -4,7 +4,10 @@ declare(strict_types=1);
namespace Kiri\Router; namespace Kiri\Router;
use Closure; use Closure;
use Kiri\Server\Events\OnWorkerStart;
use Kiri; use Kiri;
use Kiri\Abstracts\CoordinatorManager;
use Kiri\Coordinator;
use Kiri\Router\Validator\ValidatorMiddleware; use Kiri\Router\Validator\ValidatorMiddleware;
use Kiri\Router\Base\Middleware as MiddlewareManager; use Kiri\Router\Base\Middleware as MiddlewareManager;
use Kiri\Router\Constrict\RequestMethod; use Kiri\Router\Constrict\RequestMethod;
@@ -174,12 +177,16 @@ class Router
*/ */
public function scan_build_route(): void public function scan_build_route(): void
{ {
$coordinator = CoordinatorManager::utility(Coordinator::WORKER_START);
$this->read_dir_file(APP_PATH . 'routes'); $this->read_dir_file(APP_PATH . 'routes');
$container = Kiri::getDi(); $container = Kiri::getDi();
$scanner = di(Kiri\Di\Scanner::class); $scanner = $container->get(Kiri\Di\Scanner::class);
$scanner->load_directory(APP_PATH . 'app/Controller'); $scanner->load_directory(APP_PATH . 'app/Controller');
$this->reset($container); $this->reset($container);
$coordinator->done();
} }
@@ -190,7 +197,7 @@ class Router
*/ */
public function reset(ContainerInterface $container): void public function reset(ContainerInterface $container): void
{ {
$router = $container->get(DataGrip::class)->get(static::$type); $router = $container->get(DataGrip::class)->get(static::$type);
foreach ($router->getMethods() as $name => $method) { foreach ($router->getMethods() as $name => $method) {
$middlewares = MiddlewareManager::get($method->getClass(), $method->getMethod()); $middlewares = MiddlewareManager::get($method->getClass(), $method->getMethod());
$validator = MiddlewareManager::getValidator($method->getClass(), $method->getMethod()); $validator = MiddlewareManager::getValidator($method->getClass(), $method->getMethod());