refactored Twig_Template::display() to ease its extension
authorFabien Potencier <fabien.potencier@gmail.com>
Wed, 28 Dec 2011 22:05:59 +0000 (23:05 +0100)
committerFabien Potencier <fabien.potencier@gmail.com>
Wed, 28 Dec 2011 22:05:59 +0000 (23:05 +0100)
CHANGELOG
lib/Twig/Template.php

index a53f805..777ab65 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -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)
index 9386196..7d09598 100644 (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.
      *