Files
personal_website/public/index.php
T

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);