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,53 @@
<?php
declare(strict_types=1);
namespace App\Framework\View;
use App\Framework\View\Processors\ComponentProcessor;
use App\Framework\View\Processors\LayoutTagProcessor;
use App\Framework\View\Processors\PlaceholderReplacer;
final readonly class Engine implements TemplateRenderer
{
public function __construct(
private TemplateLoader $loader = new TemplateLoader(),
private Compiler $compiler = new Compiler(),
private Renderer $renderer = new Renderer(),
private TemplateProcessor $processor = new TemplateProcessor()
) {
$this->processor->registerDom(new ComponentProcessor());
$this->processor->registerDom(new LayoutTagProcessor());
$this->processor->registerDom(new PlaceholderReplacer());
}
public function render(RenderContext $context): string
{
$template = $context->template;
$data = $context->data;
$cacheFile = __DIR__ . "/cache/{$template}.cache.html";
$templateFile = $this->loader->getTemplatePath($template); // Neue Methode in TemplateLoader
// Prüfen ob Cache existiert und nicht älter als das Template
if (file_exists($cacheFile) && filemtime($cacheFile) >= filemtime($templateFile)) {
$content = file_get_contents($cacheFile);
#$dom = $this->compiler->compile($content);
} else {
// Template normal laden und kompilieren
$content = $this->loader->load($template, $context->controllerClass);;
$content = "<test>{$content}</test>";
$dom = $this->compiler->compile($content);
$html = $dom->saveHTML();
// (Optional) VOR dynamischer Verarbeitung rohe Struktur cachen
file_put_contents($cacheFile, $dom->saveHTML());
$content = $html;
}
return $this->processor->render($context, $content);
#return $this->renderer->render($dom, $data, $this);
}
}