Include.php (1601B)
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 * Includes a template. 15 * 16 * <pre> 17 * {% include 'header.html' %} 18 * Body 19 * {% include 'footer.html' %} 20 * </pre> 21 */ 22 class Twig_TokenParser_Include extends Twig_TokenParser 23 { 24 public function parse(Twig_Token $token) 25 { 26 $expr = $this->parser->getExpressionParser()->parseExpression(); 27 28 list($variables, $only, $ignoreMissing) = $this->parseArguments(); 29 30 return new Twig_Node_Include($expr, $variables, $only, $ignoreMissing, $token->getLine(), $this->getTag()); 31 } 32 33 protected function parseArguments() 34 { 35 $stream = $this->parser->getStream(); 36 37 $ignoreMissing = false; 38 if ($stream->nextIf(Twig_Token::NAME_TYPE, 'ignore')) { 39 $stream->expect(Twig_Token::NAME_TYPE, 'missing'); 40 41 $ignoreMissing = true; 42 } 43 44 $variables = null; 45 if ($stream->nextIf(Twig_Token::NAME_TYPE, 'with')) { 46 $variables = $this->parser->getExpressionParser()->parseExpression(); 47 } 48 49 $only = false; 50 if ($stream->nextIf(Twig_Token::NAME_TYPE, 'only')) { 51 $only = true; 52 } 53 54 $stream->expect(Twig_Token::BLOCK_END_TYPE); 55 56 return array($variables, $only, $ignoreMissing); 57 } 58 59 public function getTag() 60 { 61 return 'include'; 62 } 63 }