Skip to content

Commit

Permalink
Pass dependency injection tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
jesseleite committed Feb 20, 2025
1 parent bfff579 commit dcbdd69
Showing 1 changed file with 7 additions and 11 deletions.
18 changes: 7 additions & 11 deletions src/Http/Controllers/FrontendController.php
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public function route(Request $request, ...$args)
throw_if(is_callable($view) && $data, new \Exception('Parameter [$data] not supported with [$view] closure!'));

if (is_callable($view)) {
$resolvedView = $view(...static::prepareParams($params, $view, $request));
$resolvedView = static::resolveRouteClosure($view, $params);
}

if (isset($resolvedView) && $resolvedView instanceof IlluminateView) {
Expand All @@ -60,7 +60,7 @@ public function route(Request $request, ...$args)
}

$data = array_merge($params, is_callable($data)
? $data(...static::prepareParams($params, $data, $request))
? static::resolveRouteClosure($data, $params)
: $data);

$view = app(View::class)
Expand Down Expand Up @@ -94,18 +94,14 @@ private function getLoadedRouteItem($data)
}
}

private function prepareParams(array $params, Closure $closure, Request $request): array
private static function resolveRouteClosure(Closure $closure, array $params)
{
$reflect = new ReflectionFunction($closure);

return collect($reflect->getParameters())
->map(function ($param) use ($params, $request) {
if ($param->hasType() && $param->getType()->getName() === Request::class) {
return $request;
}

return $params[$param->getName()];
})
$params = collect($reflect->getParameters())
->map(fn ($param) => $param->hasType() ? app($param->getType()->getName()) : $params[$param->getName()])
->all();

return $closure(...$params);
}
}

0 comments on commit dcbdd69

Please sign in to comment.