rector/rules/Php80/NodeResolver/RequireOptionalParamResolver.php
Tomas Votruba 46dd47dd4e Updated Rector to commit ac94ddd5bd269b17afc339f39af711c02d56b34a
ac94ddd5bd [PHPStan] Reduce PHPStan errors for narrow public - take 1 (#2672)
2022-07-16 14:24:54 +00:00

29 lines
996 B
PHP

<?php
declare (strict_types=1);
namespace Rector\Php80\NodeResolver;
use PHPStan\Reflection\MethodReflection;
use PHPStan\Reflection\ParameterReflection;
use PHPStan\Reflection\ParametersAcceptorSelector;
final class RequireOptionalParamResolver
{
/**
* @return ParameterReflection[]
*/
public function resolveFromReflection(MethodReflection $methodReflection) : array
{
$parametersAcceptor = ParametersAcceptorSelector::selectSingle($methodReflection->getVariants());
$optionalParams = [];
$requireParams = [];
foreach ($parametersAcceptor->getParameters() as $position => $parameterReflection) {
if ($parameterReflection->getDefaultValue() === null && !$parameterReflection->isVariadic()) {
$requireParams[$position] = $parameterReflection;
} else {
$optionalParams[$position] = $parameterReflection;
}
}
return $requireParams + $optionalParams;
}
}