/** * Dispatch the request * * @param Route $route * * @return mixed */ public function dispatch(Route $route) { $action = $route->action(); $callback = $action['uses']; $parameters = $this->resolver->resolve(new ReflectionFunction($callback), $route->parameters()); return call_user_func_array($callback, $parameters); }
public function test_can_resolve_method_parameters_with_typehints_and_route_parameters() { $this->container->shouldReceive('make')->with(Container::class)->once()->andReturn($this->container); $parameters = $this->resolver->resolve(new \ReflectionMethod(ControllerStubWithParams::class, 'index'), ['id' => 1]); $this->assertArrayHasKey('container', $parameters); $this->assertArrayHasKey('id', $parameters); $this->assertEquals($this->container, $parameters['container']); $this->assertEquals(1, $parameters['id']); }
/** * Dispatch the request * * @param Route $route * * @throws NotFoundHttpException * @return mixed */ public function dispatch(Route $route) { $action = $route->action(); list($class, $method) = explode('@', $action['uses']); if (!method_exists($instance = $this->container->make($class), $method)) { throw new NotFoundHttpException(); } $parameters = $this->resolver->resolve(new ReflectionMethod($instance, $method), $route->parameters()); return $this->container->call([$instance, $method], $parameters); }