From 67094790d2d9db5c99e7c136f49061a78698e57d Mon Sep 17 00:00:00 2001 From: nsfisis Date: Mon, 24 Nov 2025 04:58:38 +0900 Subject: Add vhosts/t/phpcon-kagawa-2025/ --- vhosts/t/phpcon-kagawa-2025/src/App.php | 61 +++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 vhosts/t/phpcon-kagawa-2025/src/App.php (limited to 'vhosts/t/phpcon-kagawa-2025/src/App.php') diff --git a/vhosts/t/phpcon-kagawa-2025/src/App.php b/vhosts/t/phpcon-kagawa-2025/src/App.php new file mode 100644 index 0000000..85d5ed4 --- /dev/null +++ b/vhosts/t/phpcon-kagawa-2025/src/App.php @@ -0,0 +1,61 @@ + + */ + private array $routes = []; + + private RequestHandlerInterface $notFoundHandler; + + public function __construct(string $host, int $port) + { + $this->server = new Server($host, $port); + $this->notFoundHandler = new NotFoundHandler($this->server, $this->server); + } + + public function run(): void + { + $this->addRoute('/phpcon-kagawa-2025/health/', new HealthHandler($this->server, $this->server)); + $this->addRoute('/phpcon-kagawa-2025/get/', new GetHandler($this->server, $this->server)); + $this->addRoute('/phpcon-kagawa-2025/post/', new PostHandler($this->server, $this->server)); + $this->addRoute('/phpcon-kagawa-2025/cookie/', new CookieHandler($this->server, $this->server)); + $this->addRoute('/phpcon-kagawa-2025/cookie/eat/', new CookieEatHandler($this->server, $this->server)); + + $this->server->run($this); + } + + public function handle(ServerRequestInterface $request): ResponseInterface + { + $path = $request->getRequestTarget(); + if ($path !== '/' && ! str_ends_with($path, '/')) { + $path .= '/'; + } + $handler = $this->routes[$path] ?? $this->notFoundHandler; + return $handler->handle($request); + } + + private function addRoute(string $path, RequestHandlerInterface $handler): self + { + $this->routes[$path] = $handler; + return $this; + } +} -- cgit v1.2.3-70-g09d2