Rozbudowa klasy TemplateEngine – dodajemy globalData do naszego template. Do dzieła!
Na początku zmieńmy nasz plik sth.php:
<?php
echo $site_name;
echo "<br>";
echo $name;
Dodajemy tablicę z globalnymi zmiennymi i metodę addGlobal:
class TemplateEngine
{
private array $globalTemplateData = [];
//(...)
public function addGlobal(string $key, mixed $value)
{
$this->globalTemplateData[$key] = $value;
}
}
Modyfikujemy funkcję render, tak aby globalne podlegały ekstrakcji, ale bez kolizji:
class TemplateEngine
{
//(...)
public function render(string $template, array $data = [])
{
extract($data, EXTR_SKIP);
extract($this->globalTemplateData, EXTR_SKIP);
ob_start();
include $this->resolve($template);
$output = ob_get_contents();
ob_end_clean();
return $output;
}
//(...)
}
Teraz możemy użyć naszego template:
$template = new TemplateEngine(__DIR__);
$template->addGlobal('site_name', 'MyApp');
echo $template->render('sth.php', ['name' => 'John']);
Rozbudowa w następnym odcinku.