{
public $raw, $title, $body; # file contents
public $meta = []; # head metadata properties
+ public $place = []; # template variables replaced in render()
function __construct($path)
{
$Page = clone $this;
$Page->handler = $Page->handler . $Page->path; // .= with explicit getter
$Page->path = '';
- $Place = $GLOBALS['Place'];
foreach ($params as $param) {
if ($set = strpos($param, '=')) {
- $Place[ substr($param, 0, $set) ] = substr($param, $set + 1);
+ $Page->place[ substr($param, 0, $set) ] = substr($param, $set + 1);
}
elseif (!empty($param)) {
$Page->path .= '/'.$param;
}
}
- function render($blocks = [])
+ function render()
{
- $doc = ob_get_clean();
+ $doc = $this->raw;
- if (!empty($blocks['warn'])) {
+ if (!empty($this->place['warn'])) {
$warn = '<p class="warn">[[warn]]</p>';
if ($offset = strpos($doc, '</h2>')) {
$doc = substr_replace($doc, "\n\n".$warn, $offset + 5, 0);
return preg_replace_callback(
'{ \[\[ ([^] ]+) ([^]]*) \]\] }x',
- function ($sub) use ($blocks) {
+ function ($sub) {
list ($placeholder, $name, $params) = $sub;
- $html = $blocks[$name] ??
+ $html = $this->place[$name] ??
$this->widget($name, explode(' ', $params));
if (empty($html) or $html[0] != '<') {
$html = "<span>$html</span>";