ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
Defined.php
Go to the documentation of this file.
1 <?php
2 
3 /*
4  * This file is part of Twig.
5  *
6  * (c) Fabien Potencier
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11 
25 {
26  public function __construct(Twig_NodeInterface $node, $name, Twig_NodeInterface $arguments = null, $lineno)
27  {
28  if ($node instanceof Twig_Node_Expression_Name) {
29  $node->setAttribute('is_defined_test', true);
30  } elseif ($node instanceof Twig_Node_Expression_GetAttr) {
31  $node->setAttribute('is_defined_test', true);
32  $this->changeIgnoreStrictCheck($node);
33  } elseif ($node instanceof Twig_Node_Expression_BlockReference) {
34  $node->setAttribute('is_defined_test', true);
35  } elseif ($node instanceof Twig_Node_Expression_Function && 'constant' === $node->getAttribute('name')) {
36  $node->setAttribute('is_defined_test', true);
37  } elseif ($node instanceof Twig_Node_Expression_Constant || $node instanceof Twig_Node_Expression_Array) {
38  $node = new Twig_Node_Expression_Constant(true, $node->getTemplateLine());
39  } else {
40  throw new Twig_Error_Syntax('The "defined" test only works with simple variables.', $this->getTemplateLine());
41  }
42 
43  parent::__construct($node, $name, $arguments, $lineno);
44  }
45 
47  {
48  $node->setAttribute('ignore_strict_check', true);
49 
50  if ($node->getNode('node') instanceof Twig_Node_Expression_GetAttr) {
51  $this->changeIgnoreStrictCheck($node->getNode('node'));
52  }
53  }
54 
55  public function compile(Twig_Compiler $compiler)
56  {
57  $compiler->subcompile($this->getNode('node'));
58  }
59 }
60 
61 class_alias('Twig_Node_Expression_Test_Defined', 'Twig\Node\Expression\Test\DefinedTest', false);
$lineno
Definition: Node.php:22
Represents a node in the AST.
subcompile(Twig_NodeInterface $node, $raw=true)
Definition: Compiler.php:94
Exception thrown when a syntax error occurs during lexing or parsing of a template.
Definition: Syntax.php:18
changeIgnoreStrictCheck(Twig_Node_Expression_GetAttr $node)
Definition: Defined.php:46
getTemplateLine()
Definition: Node.php:121
compile(Twig_Compiler $compiler)
Compiles the node to PHP.
Definition: Defined.php:55
__construct(Twig_NodeInterface $node, $name, Twig_NodeInterface $arguments=null, $lineno)
Definition: Defined.php:26
getNode($name)
Definition: Node.php:186
setAttribute($name, $value)
Definition: Node.php:165
Represents a block call node.
Checks if a variable is defined in the current context.
Definition: Defined.php:24