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

use 
TwigCompiler;
use 
TwigErrorSyntaxError;
use 
TwigNodeExpressionConstantExpression;
use 
TwigNodeExpressionFunctionExpression;

class 
EnumCasesFunction extends FunctionExpression
{
    public function 
compile(Compiler $compiler): void
    
{
        
$arguments $this->getNode('arguments');
        if (
$arguments->hasNode('enum')) {
            
$firstArgument $arguments->getNode('enum');
        } elseif (
$arguments->hasNode('0')) {
            
$firstArgument $arguments->getNode('0');
        } else {
            
$firstArgument null;
        }

        if (!
$firstArgument instanceof ConstantExpression || !== count($arguments)) {
            
parent::compile($compiler);

            return;
        }

        
$value $firstArgument->getAttribute('value');

        if (!
is_string($value)) {
            throw new 
SyntaxError('The first argument of the "enum_cases" function must be a string.'$this->getTemplateLine(), $this->getSourceContext());
        }

        if (!
enum_exists($value)) {
            throw new 
SyntaxError(sprintf('The first argument of the "enum_cases" function must be the name of an enum, "%s" given.'$value), $this->getTemplateLine(), $this->getSourceContext());
        }

        
$compiler->raw(sprintf('%s::cases()'$value));
    }
}
Онлайн: 0
Реклама