rector/rules/Php80/NodeResolver/RequireOptionalParamResolver.php
Tomas Votruba e1e4a30cb1 Updated Rector to commit 2723dfd4df1f6c3f7a56afbbc211e0b63289bfd7
2723dfd4df [Php80] Fix OptionalParametersAfterRequiredRector to treat variadic as optional (#248)
2021-06-19 15:32:40 +00:00

29 lines
776 B
PHP

<?php
declare (strict_types=1);
namespace Rector\Php80\NodeResolver;
use PhpParser\Node\FunctionLike;
use PhpParser\Node\Param;
use PhpParser\Node\Stmt\ClassMethod;
final class RequireOptionalParamResolver
{
/**
* @param ClassMethod $functionLike
* @return Param[]
*/
public function resolve(\PhpParser\Node\FunctionLike $functionLike) : array
{
$optionalParams = [];
$requireParams = [];
foreach ($functionLike->getParams() as $position => $param) {
if ($param->default === null && !$param->variadic) {
$requireParams[$position] = $param;
} else {
$optionalParams[$position] = $param;
}
}
return $requireParams + $optionalParams;
}
}