37 lines
1.2 KiB
PHP
37 lines
1.2 KiB
PHP
<?php declare(strict_types=1);
|
|
|
|
require_once __DIR__ . '/../vendor/autoload.php';
|
|
|
|
use Laminas\HttpHandlerRunner\Emitter\SapiEmitter;
|
|
use League\Route\Router;
|
|
use League\Route\Strategy\ApplicationStrategy;
|
|
use Nyholm\Psr7\Factory\Psr17Factory;
|
|
use Nyholm\Psr7Server\ServerRequestCreator;
|
|
|
|
use App\Controllers\HomeController;
|
|
|
|
$psr17Factory = new Psr17Factory();
|
|
$creator = new ServerRequestCreator($psr17Factory, $psr17Factory, $psr17Factory, $psr17Factory);
|
|
$request = $creator->fromGlobals();
|
|
|
|
// --- Router setup ---
|
|
$strategy = new ApplicationStrategy();
|
|
$router = new Router();
|
|
|
|
// --- Routes ---
|
|
$router->get('/', [HomeController::class, 'index']);
|
|
|
|
// --- Dispatch and emit ---
|
|
try {
|
|
$response = $router->dispatch($request);
|
|
} catch (\League\Route\Http\Exception\NotFoundException $e) {
|
|
$response = (new Psr17Factory())->createResponse(404);
|
|
$response->getBody()->write('<h1>404 — Page not found</h1>');
|
|
} catch (\Throwable $e) {
|
|
$response = (new Psr17Factory())->createResponse(500);
|
|
$response->getBody()->write('<h1>500 — Server error</h1>');
|
|
}
|
|
|
|
(new SapiEmitter())->emit($response);
|
|
|