TemplateRenderer.php
Pfad: src/Infrastructure/Http/TemplateRenderer.php
Ext: php
Größe: 1155 Bytes
Geändert: 2026-07-15 21:49:04+02
<?php
declare(strict_types=1);
namespace Demo\Infrastructure\Http;
/**
* Rendert native PHP-Templates in einen String. Stellt jedem Template den
* Escaper $e und das Template-Verzeichnis $_dir bereit.
*/
final class TemplateRenderer
{
/** @var string Basisverzeichnis der Templates. */
private string $verzeichnis;
/**
* @param string $verzeichnis Absolutes Template-Verzeichnis.
*/
public function __construct(string $verzeichnis)
{
$this->verzeichnis = rtrim($verzeichnis, '/');
}
/**
* Rendert ein Template mit Daten.
*
* @param string $template Dateiname ohne .php.
* @param array<string,mixed> $daten Template-Variablen.
* @return string Gerendertes Markup.
*/
public function render(string $template, array $daten = []): string
{
$daten['_dir'] = $this->verzeichnis;
$daten['e'] = static fn (string $v): string => htmlspecialchars($v, ENT_QUOTES, 'UTF-8');
extract($daten, EXTR_SKIP);
ob_start();
require $this->verzeichnis . '/' . $template . '.php';
return (string) ob_get_clean();
}
}