This commit is contained in:
Maarten 2024-11-26 19:55:58 +01:00
parent eb3e310b0a
commit 9566ee3ead

View file

@ -20,14 +20,14 @@ class RouteValidator
*/ */
public static function resolve(object $controller, string $action, array $params): array public static function resolve(object $controller, string $action, array $params): array
{ {
$reflection = new ReflectionMethod($controller, $action); $reflection = new ReflectionMethod($controller, $action);
$methodParameters = $reflection->getParameters(); $methodParameters = $reflection->getParameters();
$validatedParams = []; $validatedParams = [];
foreach ($methodParameters as $methodParameter) { foreach ($methodParameters as $methodParameter) {
$paramName = $methodParameter->getName(); $paramName = $methodParameter->getName();
$paramType = $methodParameter->getType(); $paramType = $methodParameter->getType();
$isOptional = $methodParameter->isOptional(); $isOptional = $methodParameter->isOptional();
$defaultValue = $isOptional ? $methodParameter->getDefaultValue() : null; $defaultValue = $isOptional ? $methodParameter->getDefaultValue() : null;
if (!array_key_exists($paramName, $params)) { if (!array_key_exists($paramName, $params)) {
@ -38,7 +38,7 @@ class RouteValidator
throw new NotFoundHttpException(sprintf("Missing parameter '%s' for action '%s'", $paramName, $action)); throw new NotFoundHttpException(sprintf("Missing parameter '%s' for action '%s'", $paramName, $action));
} }
$value = $params[$paramName]; $value = $params[$paramName];
$validatedParams[$paramName] = self::validateType($paramName, $value, $paramType, $action); $validatedParams[$paramName] = self::validateType($paramName, $value, $paramType, $action);
} }