allows macros to have the same kind of logic than the one in regular templates
authorfabien <fabien@93ef8e89-cb99-4229-a87c-7fa0fa45744b>
Thu, 22 Oct 2009 01:30:27 +0000 (01:30 +0000)
committerfabien <fabien@93ef8e89-cb99-4229-a87c-7fa0fa45744b>
Thu, 22 Oct 2009 01:30:27 +0000 (01:30 +0000)
git-svn-id: http://svn.twig-project.org/trunk@88 93ef8e89-cb99-4229-a87c-7fa0fa45744b

lib/Twig/Macro.php
lib/Twig/MacroInterface.php [deleted file]
lib/Twig/Resource.php [new file with mode: 0644]
lib/Twig/Template.php

index e9d2469..8f18a15 100644 (file)
@@ -8,22 +8,6 @@
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
  */
-abstract class Twig_Macro implements Twig_MacroInterface
+abstract class Twig_Macro extends Twig_Resource
 {
-  protected $env;
-
-  public function __construct(Twig_Environment $env)
-  {
-    $this->env = $env;
-  }
-
-  /**
-   * Returns the bound environment for this template.
-   *
-   * @return Twig_Environment The current environment
-   */
-  public function getEnvironment()
-  {
-    return $this->env;
-  }
 }
diff --git a/lib/Twig/MacroInterface.php b/lib/Twig/MacroInterface.php
deleted file mode 100644 (file)
index c29ab1b..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-/*
- * This file is part of Twig.
- *
- * (c) 2009 Fabien Potencier
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-interface Twig_MacroInterface
-{
-  /**
-   * Returns the bound environment for this template.
-   *
-   * @return Twig_Environment The current environment
-   */
-  public function getEnvironment();
-}
diff --git a/lib/Twig/Resource.php b/lib/Twig/Resource.php
new file mode 100644 (file)
index 0000000..3173593
--- /dev/null
@@ -0,0 +1,62 @@
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) 2009 Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+abstract class Twig_Resource
+{
+  protected $env;
+
+  public function __construct(Twig_Environment $env)
+  {
+    $this->env = $env;
+  }
+
+  public function getEnvironment()
+  {
+    return $this->env;
+  }
+
+  protected function resolveMissingFilter($name)
+  {
+    throw new Twig_RuntimeError(sprintf('The filter "%s" does not exist', $name));
+  }
+
+  protected function getAttribute($object, $item, array $arguments = array(), $arrayOnly = false)
+  {
+    $item = (string) $item;
+
+    if ((is_array($object) || is_object($object) && $object instanceof ArrayAccess) && isset($object[$item]))
+    {
+      return $object[$item];
+    }
+
+    if ($arrayOnly)
+    {
+      return null;
+    }
+
+    if (
+      !is_object($object) ||
+      (
+        !method_exists($object, $method = $item) &&
+        !method_exists($object, $method = 'get'.ucfirst($item))
+      )
+    )
+    {
+      return null;
+    }
+
+    if ($this->env->hasExtension('sandbox'))
+    {
+      $this->env->getExtension('sandbox')->checkMethodAllowed($object, $method);
+    }
+
+    return call_user_func_array(array($object, $method), $arguments);
+  }
+}
index 50629e8..c7fd399 100644 (file)
@@ -9,15 +9,8 @@
  * For the full copyright and license information, please view the LICENSE
  * file that was distributed with this source code.
  */
-abstract class Twig_Template implements Twig_TemplateInterface
+abstract class Twig_Template extends Twig_Resource implements Twig_TemplateInterface
 {
-  protected $env;
-
-  public function __construct(Twig_Environment $env)
-  {
-    $this->env = $env;
-  }
-
   /**
    * Renders the template with the given context and returns it as string.
    *
@@ -32,47 +25,4 @@ abstract class Twig_Template implements Twig_TemplateInterface
 
     return ob_get_clean();
   }
-
-  public function getEnvironment()
-  {
-    return $this->env;
-  }
-
-  protected function resolveMissingFilter($name)
-  {
-    throw new Twig_RuntimeError(sprintf('The filter "%s" does not exist', $name));
-  }
-
-  protected function getAttribute($object, $item, array $arguments = array(), $arrayOnly = false)
-  {
-    $item = (string) $item;
-
-    if ((is_array($object) || is_object($object) && $object instanceof ArrayAccess) && isset($object[$item]))
-    {
-      return $object[$item];
-    }
-
-    if ($arrayOnly)
-    {
-      return null;
-    }
-
-    if (
-      !is_object($object) ||
-      (
-        !method_exists($object, $method = $item) &&
-        !method_exists($object, $method = 'get'.ucfirst($item))
-      )
-    )
-    {
-      return null;
-    }
-
-    if ($this->env->hasExtension('sandbox'))
-    {
-      $this->env->getExtension('sandbox')->checkMethodAllowed($object, $method);
-    }
-
-    return call_user_func_array(array($object, $method), $arguments);
-  }
 }