2024-06-20 14:10:42 +00:00
< ? 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\Unary ;
use Twig\Compiler ;
use Twig\Node\Expression\AbstractExpression ;
use Twig\Node\Node ;
abstract class AbstractUnary extends AbstractExpression
{
2025-01-13 09:56:01 +00:00
/**
* @ param AbstractExpression $node
*/
2024-06-20 14:10:42 +00:00
public function __construct ( Node $node , int $lineno )
{
2025-01-13 09:56:01 +00:00
if ( ! $node instanceof AbstractExpression ) {
trigger_deprecation ( 'twig/twig' , '3.15' , 'Not passing a "%s" instance argument to "%s" is deprecated ("%s" given).' , AbstractExpression :: class , static :: class , \get_class ( $node ));
}
parent :: __construct ([ 'node' => $node ], [ 'with_parentheses' => false ], $lineno );
2024-06-20 14:10:42 +00:00
}
public function compile ( Compiler $compiler ) : void
{
2025-01-13 09:56:01 +00:00
if ( $this -> hasExplicitParentheses ()) {
$compiler -> raw ( '(' );
} else {
$compiler -> raw ( ' ' );
}
2024-06-20 14:10:42 +00:00
$this -> operator ( $compiler );
$compiler -> subcompile ( $this -> getNode ( 'node' ));
2025-01-13 09:56:01 +00:00
if ( $this -> hasExplicitParentheses ()) {
$compiler -> raw ( ')' );
}
2024-06-20 14:10:42 +00:00
}
abstract public function operator ( Compiler $compiler ) : Compiler ;
}