Files
armel.net/src/Http/Kernel.php
Armel van Ravels bb1d280731
All checks were successful
PHP Composer / build (push) Successful in 10m28s
Initial commit
2024-08-30 22:13:03 +02:00

49 lines
1.2 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Http;
use App\Core\EnvironmentLoader;
use App\Enums\Environment;
use Laminas\Diactoros\ServerRequest;
use Laminas\HttpHandlerRunner\Emitter\SapiEmitter;
use League\Route\Router;
use Whoops\Handler\PrettyPageHandler;
use Whoops\Run;
/** @codeCoverageIgnore */
final readonly class Kernel
{
public function __construct(
private EnvironmentLoader $environmentLoader,
private ExceptionHandler $exceptionHandler,
private ServerRequest $serverRequest,
private Router $router,
private SapiEmitter $sapiEmitter,
) {
}
public function run(): void
{
$this->environmentLoader->load();
$this->setExceptionHandler();
$response = $this->router->dispatch($this->serverRequest);
$this->sapiEmitter->emit($response);
}
private function setExceptionHandler(): void
{
if (Environment::Production->isCurrent()) {
set_exception_handler($this->exceptionHandler->handle(...));
return;
}
$whoops = new Run();
$whoops->pushHandler(new PrettyPageHandler());
$whoops->register();
}
}