Travis config update Removed HHVM script as Laravel no longer support HHVM after releasing 5.3
137 lines
3.4 KiB
PHP
137 lines
3.4 KiB
PHP
<?php
|
|
/*
|
|
* This file is part of the DebugBar package.
|
|
*
|
|
* (c) 2013 Maxime Bouroumeau-Fuseau
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace DebugBar\Bridge\Twig;
|
|
|
|
use Twig_Template;
|
|
use Twig_TemplateInterface;
|
|
|
|
/**
|
|
* Wraps a Twig_Template to add profiling features
|
|
*/
|
|
class TraceableTwigTemplate extends Twig_Template implements Twig_TemplateInterface
|
|
{
|
|
protected $template;
|
|
|
|
/**
|
|
* @param TraceableTwigEnvironment $env
|
|
* @param Twig_Template $template
|
|
*/
|
|
public function __construct(TraceableTwigEnvironment $env, Twig_Template $template)
|
|
{
|
|
$this->env = $env;
|
|
$this->template = $template;
|
|
}
|
|
|
|
public function __call($name, $arguments)
|
|
{
|
|
return call_user_func_array(array($this->template, $name), $arguments);
|
|
}
|
|
|
|
public function doDisplay(array $context, array $blocks = array())
|
|
{
|
|
return $this->template->doDisplay($context, $blocks);
|
|
}
|
|
|
|
public function getTemplateName()
|
|
{
|
|
return $this->template->getTemplateName();
|
|
}
|
|
|
|
public function getEnvironment()
|
|
{
|
|
return $this->template->getEnvironment();
|
|
}
|
|
|
|
public function getParent(array $context)
|
|
{
|
|
return $this->template->getParent($context);
|
|
}
|
|
|
|
public function isTraitable()
|
|
{
|
|
return $this->template->isTraitable();
|
|
}
|
|
|
|
public function displayParentBlock($name, array $context, array $blocks = array())
|
|
{
|
|
$this->template->displayParentBlock($name, $context, $blocks);
|
|
}
|
|
|
|
public function displayBlock($name, array $context, array $blocks = array(), $useBlocks = true)
|
|
{
|
|
$this->template->displayBlock($name, $context, $blocks, $useBlocks);
|
|
}
|
|
|
|
public function renderParentBlock($name, array $context, array $blocks = array())
|
|
{
|
|
return $this->template->renderParentBlock($name, $context, $blocks);
|
|
}
|
|
|
|
public function renderBlock($name, array $context, array $blocks = array(), $useBlocks = true)
|
|
{
|
|
return $this->template->renderBlock($name, $context, $blocks, $useBlocks);
|
|
}
|
|
|
|
public function hasBlock($name)
|
|
{
|
|
return $this->template->hasBlock($name);
|
|
}
|
|
|
|
public function getBlockNames()
|
|
{
|
|
return $this->template->getBlockNames();
|
|
}
|
|
|
|
public function getBlocks()
|
|
{
|
|
return $this->template->getBlocks();
|
|
}
|
|
|
|
public function display(array $context, array $blocks = array())
|
|
{
|
|
$start = microtime(true);
|
|
$this->template->display($context, $blocks);
|
|
$end = microtime(true);
|
|
|
|
if ($timeDataCollector = $this->env->getTimeDataCollector()) {
|
|
$name = sprintf("twig.render(%s)", $this->template->getTemplateName());
|
|
$timeDataCollector->addMeasure($name, $start, $end);
|
|
}
|
|
|
|
$this->env->addRenderedTemplate(array(
|
|
'name' => $this->template->getTemplateName(),
|
|
'render_time' => $end - $start
|
|
));
|
|
}
|
|
|
|
public function render(array $context)
|
|
{
|
|
$level = ob_get_level();
|
|
ob_start();
|
|
try {
|
|
$this->display($context);
|
|
} catch (Exception $e) {
|
|
while (ob_get_level() > $level) {
|
|
ob_end_clean();
|
|
}
|
|
|
|
throw $e;
|
|
}
|
|
|
|
return ob_get_clean();
|
|
}
|
|
|
|
public static function clearCache()
|
|
{
|
|
Twig_Template::clearCache();
|
|
}
|
|
}
|