diff --git a/CHANGELOG b/CHANGELOG index 4b2f919be..7a719523f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,6 @@ * 1.40.2 (2019-XX-XX) - * n/a + * optimized context access on PHP 7.4 * 1.40.1 (2019-04-29) diff --git a/src/Node/Expression/NameExpression.php b/src/Node/Expression/NameExpression.php index 516ba285e..d3f7d107f 100644 --- a/src/Node/Expression/NameExpression.php +++ b/src/Node/Expression/NameExpression.php @@ -36,13 +36,20 @@ class NameExpression extends AbstractExpression if ($this->getAttribute('is_defined_test')) { if ($this->isSpecial()) { $compiler->repr(true); + } elseif (\PHP_VERSION_ID >= 700400) { + $compiler + ->raw('array_key_exists(') + ->string($name) + ->raw(', $context)') + ; } else { $compiler ->raw('(isset($context[') ->string($name) ->raw(']) || array_key_exists(') ->string($name) - ->raw(', $context))'); + ->raw(', $context))') + ; } } elseif ($this->isSpecial()) { $compiler->raw($this->specialVars[$name]);