Root Zanli
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
opt
/
cpanel
/
ea-wappspector
/
vendor
/
rector
/
rector
/
src
/
NodeAnalyzer
/
Filename :
VariadicAnalyzer.php
back
Copy
<?php declare (strict_types=1); namespace Rector\NodeAnalyzer; use PhpParser\Node\Expr\FuncCall; use PhpParser\Node\Expr\MethodCall; use PhpParser\Node\Expr\StaticCall; use PHPStan\Reflection\FunctionReflection; use PHPStan\Reflection\MethodReflection; use Rector\Reflection\ReflectionResolver; final class VariadicAnalyzer { /** * @readonly * @var \Rector\Reflection\ReflectionResolver */ private $reflectionResolver; public function __construct(ReflectionResolver $reflectionResolver) { $this->reflectionResolver = $reflectionResolver; } /** * @param \PhpParser\Node\Expr\FuncCall|\PhpParser\Node\Expr\StaticCall|\PhpParser\Node\Expr\MethodCall $call */ public function hasVariadicParameters($call) : bool { $functionLikeReflection = $this->reflectionResolver->resolveFunctionLikeReflectionFromCall($call); if ($functionLikeReflection === null) { return \false; } return $this->hasVariadicVariant($functionLikeReflection); } /** * @param \PHPStan\Reflection\MethodReflection|\PHPStan\Reflection\FunctionReflection $functionLikeReflection */ private function hasVariadicVariant($functionLikeReflection) : bool { foreach ($functionLikeReflection->getVariants() as $parametersAcceptor) { // can be any number of arguments → nothing to limit here if ($parametersAcceptor->isVariadic()) { return \true; } } return \false; } }