2021-01-22 02:41:09 +01:00
|
|
|
<?php
|
|
|
|
|
2021-05-09 20:15:43 +00:00
|
|
|
declare (strict_types=1);
|
2021-01-22 02:41:09 +01:00
|
|
|
namespace Rector\Php80\NodeResolver;
|
|
|
|
|
|
|
|
use PhpParser\Node\FunctionLike;
|
|
|
|
use PhpParser\Node\Param;
|
|
|
|
use PhpParser\Node\Stmt\ClassMethod;
|
|
|
|
final class RequireOptionalParamResolver
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* @param ClassMethod $functionLike
|
2021-01-22 10:16:00 +01:00
|
|
|
* @return Param[]
|
2021-01-22 02:41:09 +01:00
|
|
|
*/
|
2021-05-10 22:23:08 +00:00
|
|
|
public function resolve(\PhpParser\Node\FunctionLike $functionLike) : array
|
2021-01-22 02:41:09 +01:00
|
|
|
{
|
|
|
|
$optionalParams = [];
|
|
|
|
$requireParams = [];
|
|
|
|
foreach ($functionLike->getParams() as $position => $param) {
|
2021-06-19 15:32:40 +00:00
|
|
|
if ($param->default === null && !$param->variadic) {
|
2021-01-22 02:41:09 +01:00
|
|
|
$requireParams[$position] = $param;
|
|
|
|
} else {
|
|
|
|
$optionalParams[$position] = $param;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return $requireParams + $optionalParams;
|
|
|
|
}
|
|
|
|
}
|