} elseif ($this->isSpecial()) {
$compiler->raw($this->specialVars[$name]);
} else {
- $compiler
- ->raw('$this->getContext($context, ')
- ->string($name)
- ;
+ if (version_compare(phpversion(), '5.4.0RC1', '>=') && ($this->getAttribute('ignore_strict_check') || !$compiler->getEnvironment()->isStrictVariables())) {
+ // PHP 5.4 ternary operator performance was optimized
+ $compiler
+ ->raw('(isset($context[')
+ ->string($name)
+ ->raw(']) ? $context[')
+ ->string($name)
+ ->raw('] : null)')
+ ;
+ } else {
+ $compiler
+ ->raw('$this->getContext($context, ')
+ ->string($name)
+ ;
- if ($this->getAttribute('ignore_strict_check')) {
- $compiler->raw(', true');
- }
+ if ($this->getAttribute('ignore_strict_check')) {
+ $compiler->raw(', true');
+ }
- $compiler
- ->raw(')')
- ;
+ $compiler
+ ->raw(')')
+ ;
+ }
}
}