ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
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
61class_alias('Twig_Node_Expression_Test_Defined', 'Twig\Node\Expression\Test\DefinedTest', false);
An exception for terminatinating execution or to throw for unit testing.
Compiles a node to PHP code.
Definition: Compiler.php:19
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:19
Represents a block call node.
Checks if a variable is defined in the current context.
Definition: Defined.php:25
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
changeIgnoreStrictCheck(Twig_Node_Expression_GetAttr $node)
Definition: Defined.php:46
$lineno
Definition: Node.php:22
getTemplateLine()
Definition: Node.php:121
getNode($name)
Definition: Node.php:186
setAttribute($name, $value)
Definition: Node.php:165
Represents a node in the AST.