__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
<?php
/*
* This file is part of Twig.
*
* (c) Fabien Potencier
* (c) Armin Ronacher
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Twig\Node\Expression;
use Twig\Compiler;
use Twig\Extension\SandboxExtension;
use Twig\Template;
class GetAttrExpression extends AbstractExpression
{
public function __construct(AbstractExpression $node, AbstractExpression $attribute, ?AbstractExpression $arguments, string $type, int $lineno)
{
$nodes = ['node' => $node, 'attribute' => $attribute];
if (null !== $arguments) {
$nodes['arguments'] = $arguments;
}
parent::__construct($nodes, ['type' => $type, 'is_defined_test' => false, 'ignore_strict_check' => false, 'optimizable' => true], $lineno);
}
public function compile(Compiler $compiler): void
{
$env = $compiler->getEnvironment();
// optimize array calls
if (
$this->getAttribute('optimizable')
&& (!$env->isStrictVariables() || $this->getAttribute('ignore_strict_check'))
&& !$this->getAttribute('is_defined_test')
&& Template::ARRAY_CALL === $this->getAttribute('type')
) {
$var = '$'.$compiler->getVarName();
$compiler
->raw('(('.$var.' = ')
->subcompile($this->getNode('node'))
->raw(') && is_array(')
->raw($var)
->raw(') || ')
->raw($var)
->raw(' instanceof ArrayAccess ? (')
->raw($var)
->raw('[')
->subcompile($this->getNode('attribute'))
->raw('] ?? null) : null)')
;
return;
}
$compiler->raw('twig_get_attribute($this->env, $this->source, ');
if ($this->getAttribute('ignore_strict_check')) {
$this->getNode('node')->setAttribute('ignore_strict_check', true);
}
$compiler
->subcompile($this->getNode('node'))
->raw(', ')
->subcompile($this->getNode('attribute'))
;
if ($this->hasNode('arguments')) {
$compiler->raw(', ')->subcompile($this->getNode('arguments'));
} else {
$compiler->raw(', []');
}
$compiler->raw(', ')
->repr($this->getAttribute('type'))
->raw(', ')->repr($this->getAttribute('is_defined_test'))
->raw(', ')->repr($this->getAttribute('ignore_strict_check'))
->raw(', ')->repr($env->hasExtension(SandboxExtension::class))
->raw(', ')->repr($this->getNode('node')->getTemplateLine())
->raw(')')
;
}
}
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| Binary | Folder | 0755 |
|
|
| Filter | Folder | 0755 |
|
|
| Test | Folder | 0755 |
|
|
| Unary | Folder | 0755 |
|
|
| AbstractExpression.php | File | 452 B | 0644 |
|
| ArrayExpression.php | File | 3.86 KB | 0644 |
|
| ArrowFunctionExpression.php | File | 1.54 KB | 0644 |
|
| AssignNameExpression.php | File | 529 B | 0644 |
|
| BlockReferenceExpression.php | File | 2.25 KB | 0644 |
|
| CallExpression.php | File | 12.51 KB | 0644 |
|
| ConditionalExpression.php | File | 1.28 KB | 0644 |
|
| ConstantExpression.php | File | 583 B | 0644 |
|
| FilterExpression.php | File | 1.26 KB | 0644 |
|
| FunctionExpression.php | File | 1.34 KB | 0644 |
|
| GetAttrExpression.php | File | 2.72 KB | 0644 |
|
| InlinePrint.php | File | 677 B | 0644 |
|
| MethodCallExpression.php | File | 1.74 KB | 0644 |
|
| NameExpression.php | File | 2.9 KB | 0644 |
|
| NullCoalesceExpression.php | File | 2.05 KB | 0644 |
|
| ParentExpression.php | File | 1.13 KB | 0644 |
|
| TempNameExpression.php | File | 632 B | 0644 |
|
| TestExpression.php | File | 1.09 KB | 0644 |
|
| VariadicExpression.php | File | 442 B | 0644 |
|