{
public function __construct($name, $lineno, $tag = null)
{
- // hack to be BC
- if ($name instanceof Twig_NodeInterface) {
- parent::__construct(array('name' => $name), array(), $lineno, $tag);
- } else {
- parent::__construct(array(), array('name' => $name), $lineno, $tag);
- }
+ parent::__construct(array(), array('name' => $name), $lineno, $tag);
}
/**
*/
public function compile(Twig_Compiler $compiler)
{
- if ($this->hasNode('name')) {
- $compiler
- ->addDebugInfo($this)
- ->write("\$this->displayBlock(")
- ->subcompile($this->getNode('name'))
- ->raw(", \$context, \$blocks);\n")
- ;
- } else {
- $compiler
- ->addDebugInfo($this)
- ->write(sprintf("\$this->displayBlock('%s', \$context, \$blocks);\n", $this->getAttribute('name')))
- ;
- }
+ $compiler
+ ->addDebugInfo($this)
+ ->write(sprintf("\$this->displayBlock('%s', \$context, \$blocks);\n", $this->getAttribute('name')))
+ ;
}
}
--- /dev/null
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) 2009 Fabien Potencier
+ * (c) 2009 Armin Ronacher
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Represents a block call node.
+ *
+ * @package twig
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+class Twig_Node_OptimizedBlockReference extends Twig_Node_BlockReference implements Twig_NodeOutputInterface
+{
+ public function __construct(Twig_NodeInterface $name, $lineno, $tag = null)
+ {
+ call_user_func('Twig_Node::__construct', array('name' => $name), array(), $lineno, $tag);
+ }
+
+ /**
+ * Compiles the node to PHP.
+ *
+ * @param Twig_Compiler A Twig_Compiler instance
+ */
+ public function compile(Twig_Compiler $compiler)
+ {
+ $compiler
+ ->addDebugInfo($this)
+ ->write("\$this->displayBlock(")
+ ->subcompile($this->getNode('name'))
+ ->raw(", \$context, \$blocks);\n")
+ ;
+ }
+}
protected function optimizeRenderBlock($node, $env)
{
if ($node instanceof Twig_Node_Print && $node->getNode('expr') instanceof Twig_Node_Expression_BlockReference) {
- return new Twig_Node_BlockReference($node->getNode('expr')->getNode('name'), $node->getLine(), $node->getNodeTag());
+ return new Twig_Node_OptimizedBlockReference($node->getNode('expr')->getNode('name'), $node->getLine(), $node->getNodeTag());
}
return $node;