2024-06-20 14:10:42 +00:00
< ? php
/*
* This file is part of Twig .
*
* ( c ) Fabien Potencier
*
* For the full copyright and license information , please view the LICENSE
* file that was distributed with this source code .
*/
namespace Twig\Node ;
use Twig\Attribute\YieldReady ;
use Twig\Compiler ;
use Twig\Node\Expression\AbstractExpression ;
use Twig\Node\Expression\NameExpression ;
2025-01-13 09:56:01 +00:00
use Twig\Node\Expression\Variable\AssignTemplateVariable ;
2024-06-20 14:10:42 +00:00
/**
* Represents an import node .
*
* @ author Fabien Potencier < fabien @ symfony . com >
*/
#[YieldReady]
class ImportNode extends Node
{
2025-01-13 09:56:01 +00:00
public function __construct ( AbstractExpression $expr , AbstractExpression | AssignTemplateVariable $var , int $lineno )
2024-06-20 14:10:42 +00:00
{
2025-01-13 09:56:01 +00:00
if ( \func_num_args () > 3 ) {
trigger_deprecation ( 'twig/twig' , '3.15' , \sprintf ( 'Passing more than 3 arguments to "%s()" is deprecated.' , __METHOD__ ));
}
if ( ! $var instanceof AssignTemplateVariable ) {
trigger_deprecation ( 'twig/twig' , '3.15' , \sprintf ( 'Passing a "%s" instance as the second argument of "%s" is deprecated, pass a "%s" instead.' , $var :: class , __CLASS__ , AssignTemplateVariable :: class ));
$var = new AssignTemplateVariable ( $var -> getAttribute ( 'name' ), $lineno );
}
parent :: __construct ([ 'expr' => $expr , 'var' => $var ], [], $lineno );
2024-06-20 14:10:42 +00:00
}
public function compile ( Compiler $compiler ) : void
{
2025-01-13 09:56:01 +00:00
$compiler -> subcompile ( $this -> getNode ( 'var' ));
2024-06-20 14:10:42 +00:00
if ( $this -> getNode ( 'expr' ) instanceof NameExpression && '_self' === $this -> getNode ( 'expr' ) -> getAttribute ( 'name' )) {
$compiler -> raw ( '$this' );
} else {
$compiler
-> raw ( '$this->loadTemplate(' )
-> subcompile ( $this -> getNode ( 'expr' ))
-> raw ( ', ' )
-> repr ( $this -> getTemplateName ())
-> raw ( ', ' )
-> repr ( $this -> getTemplateLine ())
-> raw ( ')->unwrap()' )
;
}
$compiler -> raw ( " ; \n " );
}
}