Вход Регистрация
Файл: upload/core/vendor/twig/twig/src/Node/Expression/ConditionalExpression.php
Строк: 51
<?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 TwigNodeExpression;

use 
TwigCompiler;
use 
TwigNodeExpressionTernaryConditionalTernary;

class 
ConditionalExpression extends AbstractExpression implements OperatorEscapeInterface
{
    public function 
__construct(AbstractExpression $expr1AbstractExpression $expr2AbstractExpression $expr3int $lineno)
    {
        
trigger_deprecation('twig/twig''3.17'sprintf('"%s" is deprecated; use "%s" instead.'__CLASS__ConditionalTernary::class));

        
parent::__construct(['expr1' => $expr1'expr2' => $expr2'expr3' => $expr3], [], $lineno);
    }

    public function 
compile(Compiler $compiler): void
    
{
        
// Ternary with no then uses Elvis operator
        
if ($this->getNode('expr1') === $this->getNode('expr2')) {
            
$compiler
                
->raw('((')
                ->
subcompile($this->getNode('expr1'))
                ->
raw(') ?: (')
                ->
subcompile($this->getNode('expr3'))
                ->
raw('))');
        } else {
            
$compiler
                
->raw('((')
                ->
subcompile($this->getNode('expr1'))
                ->
raw(') ? (')
                ->
subcompile($this->getNode('expr2'))
                ->
raw(') : (')
                ->
subcompile($this->getNode('expr3'))
                ->
raw('))');
        }
    }

    public function 
getOperandNamesToEscape(): array
    {
        return [
'expr2''expr3'];
    }
}
Онлайн: 0
Реклама