60 lines
1.3 KiB
PHP
60 lines
1.3 KiB
PHP
|
<?php
|
||
|
declare(strict_types=1);
|
||
|
|
||
|
namespace Mcp;
|
||
|
|
||
|
use Mcp\Util\TemplateVarArray;
|
||
|
|
||
|
class TemplateBuilder
|
||
|
{
|
||
|
|
||
|
private string $basedir;
|
||
|
private string $name;
|
||
|
private ?string $parent = null;
|
||
|
private array $vars = [];
|
||
|
|
||
|
public function __construct(string $basedir, string $name)
|
||
|
{
|
||
|
$this->basedir = $basedir;
|
||
|
$this->name = $name;
|
||
|
}
|
||
|
|
||
|
public function parent(string $parent): TemplateBuilder
|
||
|
{
|
||
|
$this->parent = $parent;
|
||
|
return $this;
|
||
|
}
|
||
|
|
||
|
public function vars(array $vars): TemplateBuilder
|
||
|
{
|
||
|
foreach ($vars as $key => $val) {
|
||
|
$this->vars[$key] = htmlspecialchars(strval($val));
|
||
|
}
|
||
|
return $this;
|
||
|
}
|
||
|
|
||
|
public function var(string $key, string $val): TemplateBuilder
|
||
|
{
|
||
|
$this->vars[$key] = htmlspecialchars($val);
|
||
|
return $this;
|
||
|
}
|
||
|
|
||
|
public function unsafeVar(string $key, string $val): TemplateBuilder
|
||
|
{
|
||
|
$this->vars[$key] = $val;
|
||
|
return $this;
|
||
|
}
|
||
|
|
||
|
public function render(): void
|
||
|
{
|
||
|
$v = new TemplateVarArray($this->vars);
|
||
|
$basepath = $this->basedir.DIRECTORY_SEPARATOR;
|
||
|
if ($this->parent == null) {
|
||
|
require $basepath.$this->name;
|
||
|
} else {
|
||
|
$v['child-template'] = $basepath.$this->name;
|
||
|
require $basepath.$this->parent;
|
||
|
}
|
||
|
}
|
||
|
}
|