/** * Compile template into PHP code * * @param array<string,array|string|integer> $context Current context * @param string $template handlebars template * * @return string|null generated PHP code */ public static function compileTemplate(&$context, $template) { array_unshift($context['parsed'], array()); Validator::verify($context, $template); if (count($context['error'])) { return; } // Do PHP code generation. Parser::setDelimiter($context); // Handle dynamic partials Partial::handleDynamic($context); $code = ''; foreach ($context['parsed'][0] as $info) { if (is_array($info)) { $context['tokens']['current']++; $tmpl = static::compileToken($context, $info); if ($tmpl == $context['ops']['seperator']) { $tmpl = ''; } else { $tmpl = "'{$tmpl}'"; } $code .= $tmpl; } else { $code .= $info; } } static::$lastParsed = array_shift($context['parsed']); return $code; }