chore: lots of changes
This commit is contained in:
53
src/Framework/View/Engine.php
Normal file
53
src/Framework/View/Engine.php
Normal 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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user