psrContainer = Reg::get('container'); } private function registerRoutes(Router $router): void { if (! defined("IO_CORNERSTONE_PROJECT")) { return; // Running CLI from Framework test script } if (! class_exists(\Project\Providers\RouteServiceProvider::class)) { throw new NoRouteProviderFoundException("Class NOT found: Project\Providers\RouteServiceProvider"); } try { $routeProviders = new \Project\Providers\RouteServiceProvider(); } catch (\Throwable $e) { throw new RouteProviderException("Unable to INIT RouteServiceProvider class \r\n" . $e->getMessage()); } if (! method_exists($routeProviders, "register")) { throw new NoRouteProviderFoundException("Method NOT found: Project\Providers\RouteServiceProvider::register"); } try { $routeProviders->register($router); } catch (\Throwable $e) { throw new RouteProviderException("Unable to call register on Route ServiceProvider \r\n" . $e->getMessage()); } } private function buildKernel() { $router = new Router(); $this->registerRoutes($router); $fallback = new AppHandler( $this->psrContainer->get(App::class) ); return new MiddlewareQueueHandler( [ $this->psrContainer->get(ErrorMiddleware::class), $this->psrContainer->get(RequestLoggerMiddleware::class), ], new RoutingHandler($router, $this->psrContainer, $fallback) ); } private function dispatch($kernel): Response { $httpFactory = new HttpFactory(); if (Console::isConsole()) { $createPsr7Request = $httpFactory->createCliRequest(); } else { $createPsr7Request = $httpFactory->createServerRequestFromGlobals(); } return $kernel->handle($createPsr7Request); } private function emit(Response $response): void { http_response_code($response->getStatusCode()); foreach ($response->getHeaders() as $name => $values) { if (! is_array($values) && ! is_object($values)) { continue; } foreach ($values as $value) { header("$name: $value", false); } } echo $response->getBody(); } public function run(): void { $kernel = $this->buildKernel(); $response = $this->dispatch($kernel); $this->emit($response); } } //dd($createPsr7Request->getQueryParams()['name']); //dd($createPsr7Request->getVar()->get("name"));