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\UtilCode
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,
];
}