basic website, basic templating

This commit is contained in:
2022-10-21 14:31:48 +02:00
parent 303fc11327
commit fdd24d90da
11 changed files with 196 additions and 0 deletions

40
src/Service/Template.php Normal file

@ -0,0 +1,40 @@
<?php
namespace App\Service;
use Exception;
class Template
{
public function __construct(private readonly string $templateDir)
{
// empty body
}
/**
* @throws Exception
*/
public function render(string $templateName): void
{
$template = file_get_contents(filename: $this->templateDir . $templateName);
// search for includes
preg_match_all(pattern: '/{% include ?\'?(.*?)\'? ?%}/i', subject: $template, matches: $matches, flags: PREG_SET_ORDER);
foreach ($matches as $value) {
$token = $value[0];
$include = $this->templateDir . $value[1];
if (file_exists(filename: $include)) {
$replacement = file_get_contents(filename: $include);
} else {
throw new Exception(message: "Missing included file: $include");
}
$template = str_replace(search: $token, replace: $replacement, subject: $template);
}
// remove the original template code
$template = preg_replace(pattern: '/{% include ?\'?(.*?)\'? ?%}/i', replacement: '', subject: $template);
echo $template;
}
}