1<?php 2 3/* 4 * This file is part of Twig. 5 * 6 * (c) 2009 Fabien Potencier 7 * (c) 2009 Armin Ronacher 8 * 9 * For the full copyright and license information, please view the LICENSE 10 * file that was distributed with this source code. 11 */ 12 13/** 14 * Extends a template by another one. 15 * 16 * <pre> 17 * {% extends "base.html" %} 18 * </pre> 19 * 20 * @final 21 */ 22class Twig_TokenParser_Extends extends Twig_TokenParser 23{ 24 public function parse(Twig_Token $token) 25 { 26 $stream = $this->parser->getStream(); 27 28 if (!$this->parser->isMainScope()) { 29 throw new Twig_Error_Syntax('Cannot extend from a block.', $token->getLine(), $stream->getSourceContext()); 30 } 31 32 if (null !== $this->parser->getParent()) { 33 throw new Twig_Error_Syntax('Multiple extends tags are forbidden.', $token->getLine(), $stream->getSourceContext()); 34 } 35 $this->parser->setParent($this->parser->getExpressionParser()->parseExpression()); 36 37 $stream->expect(Twig_Token::BLOCK_END_TYPE); 38 } 39 40 public function getTag() 41 { 42 return 'extends'; 43 } 44} 45