From: fabien Date: Thu, 22 Oct 2009 01:30:27 +0000 (+0000) Subject: allows macros to have the same kind of logic than the one in regular templates X-Git-Url: http://git.silmor.de/gitweb/?a=commitdiff_plain;h=43a1668343e91bfbf6fbb8afbfe50fe96de26a93;p=konrad%2Ftwig.git allows macros to have the same kind of logic than the one in regular templates git-svn-id: http://svn.twig-project.org/trunk@88 93ef8e89-cb99-4229-a87c-7fa0fa45744b --- diff --git a/lib/Twig/Macro.php b/lib/Twig/Macro.php index e9d2469..8f18a15 100644 --- a/lib/Twig/Macro.php +++ b/lib/Twig/Macro.php @@ -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 index c29ab1b..0000000 --- a/lib/Twig/MacroInterface.php +++ /dev/null @@ -1,19 +0,0 @@ -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); + } +} diff --git a/lib/Twig/Template.php b/lib/Twig/Template.php index 50629e8..c7fd399 100644 --- a/lib/Twig/Template.php +++ b/lib/Twig/Template.php @@ -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); - } }