chore: lots of changes

This commit is contained in:
2025-05-24 07:09:22 +02:00
parent 77ee769d5e
commit 899227b0a4
178 changed files with 5145 additions and 53 deletions

View File

@@ -0,0 +1,73 @@
<?php
declare(strict_types=1);
namespace App\Framework\Router;
use App\Framework\Http\Headers;
use App\Framework\Http\HttpResponse;
use App\Framework\Http\Response;
use App\Framework\View\Engine;
use App\Framework\View\RenderContext;
use App\Framework\View\TemplateRenderer;
readonly class RouteResponder
{
public function __construct(
private TemplateRenderer $templateRenderer = new Engine()
) {
}
public function respond(ActionResult $result): Response
{
$contentType = "text/html";
switch ($result->resultType) {
case ResultType::Html:
$body = $this->renderTemplate(
$result->template,
$result->data,
$result->layout ?? null,
$result->slots ?? [],
$result->controllerClass
);
$contentType = "text/html";
break;
case ResultType::Json:
$body = json_encode(
$result->data,
JSON_THROW_ON_ERROR | JSON_UNESCAPED_UNICODE
);
$contentType = "application/json";
break;
case ResultType::Plain:
$body = $result->data['text'] ?? '';
$contentType = "text/plain";
break;
default:
throw new \RuntimeException("Unknown result type: {$result->resultType}");
}
return new HttpResponse(
status: $result->status,
headers: new Headers()->with('Content-Type', $contentType), //['Content-Type' => $contentType],
body: $body
);
}
private function renderTemplate(string $template, array $data, ?string $layout, array $slots = [], ?string $controllerName = null): string
{
$context = new RenderContext(
template: $template,
data: $data,
layout: $layout,
slots: $slots,
controllerClass: $controllerName
);
return $this->templateRenderer->render($context);
}
}