Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. CallableArgumentsExtractor.php

function CallableArgumentsExtractor::getCallableParameters

1 call to CallableArgumentsExtractor::getCallableParameters()
CallableArgumentsExtractor::extractArguments in vendor/twig/twig/src/Util/CallableArgumentsExtractor.php

File

vendor/twig/twig/src/Util/CallableArgumentsExtractor.php, line 184

Class

CallableArgumentsExtractor
@author Fabien Potencier <fabien@symfony.com>

Namespace

Twig\Util

Code

private function getCallableParameters() : array {
    $parameters = $this->rc
        ->getReflector()
        ->getParameters();
    if ($this->node
        ->hasNode('node')) {
        array_shift($parameters);
    }
    if ($this->twigCallable
        ->needsCharset()) {
        array_shift($parameters);
    }
    if ($this->twigCallable
        ->needsEnvironment()) {
        array_shift($parameters);
    }
    if ($this->twigCallable
        ->needsContext()) {
        array_shift($parameters);
    }
    foreach ($this->twigCallable
        ->getArguments() as $argument) {
        array_shift($parameters);
    }
    $isPhpVariadic = false;
    if ($this->twigCallable
        ->isVariadic()) {
        $argument = end($parameters);
        $isArray = $argument && $argument->hasType() && $argument->getType() instanceof \ReflectionNamedType && 'array' === $argument->getType()
            ->getName();
        if ($isArray && $argument->isDefaultValueAvailable() && [] === $argument->getDefaultValue()) {
            array_pop($parameters);
        }
        elseif ($argument && $argument->isVariadic()) {
            array_pop($parameters);
            $isPhpVariadic = true;
        }
        else {
            throw new SyntaxError(\sprintf('The last parameter of "%s" for %s "%s" must be an array with default value, eg. "array $arg = []".', $this->rc
                ->getName(), $this->twigCallable
                ->getType(), $this->twigCallable
                ->getName()));
        }
    }
    return [
        $parameters,
        $isPhpVariadic,
    ];
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal