refactored Twig_Template::display() to ease its extension

This commit is contained in:
Fabien Potencier
2011-12-28 23:05:59 +01:00
parent 88de457774
commit fc85a16886
2 changed files with 26 additions and 15 deletions
+1
View File
@@ -1,5 +1,6 @@
* 1.5.0-RC2
* refactored Twig_Template::display() to ease its extension
* added a number_format filter
* 1.5.0-RC1 (2011-12-26)
+25 -15
View File
@@ -227,21 +227,7 @@ abstract class Twig_Template implements Twig_TemplateInterface
*/
public function display(array $context, array $blocks = array())
{
// we don't use array_merge as the context being generally
// bigger than globals, this code is faster.
foreach ($this->env->getGlobals() as $key => $value) {
if (!array_key_exists($key, $context)) {
$context[$key] = $value;
}
}
try {
$this->doDisplay($context, $blocks);
} catch (Twig_Error $e) {
throw $e;
} catch (Exception $e) {
throw new Twig_Error_Runtime(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, null, $e);
}
$this->displayWithErrorHandling($this->mergeContextWithGlobals($context), $blocks);
}
/**
@@ -264,6 +250,30 @@ abstract class Twig_Template implements Twig_TemplateInterface
return ob_get_clean();
}
protected function mergeContextWithGlobals(array $context)
{
// we don't use array_merge as the context being generally
// bigger than globals, this code is faster.
foreach ($this->env->getGlobals() as $key => $value) {
if (!array_key_exists($key, $context)) {
$context[$key] = $value;
}
}
return $context;
}
protected function displayWithErrorHandling(array $context, array $blocks = array())
{
try {
$this->doDisplay($context, $blocks);
} catch (Twig_Error $e) {
throw $e;
} catch (Exception $e) {
throw new Twig_Error_Runtime(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, null, $e);
}
}
/**
* Auto-generated method to display the template with the given context.
*