55 lines
1.3 KiB
PHP
55 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace Illuminate\Routing;
|
|
|
|
use Illuminate\Container\Container;
|
|
use Illuminate\Routing\Contracts\CallableDispatcher as CallableDispatcherContract;
|
|
use ReflectionFunction;
|
|
|
|
class CallableDispatcher implements CallableDispatcherContract
|
|
{
|
|
use ResolvesRouteDependencies;
|
|
|
|
/**
|
|
* The container instance.
|
|
*
|
|
* @var \Illuminate\Container\Container
|
|
*/
|
|
protected $container;
|
|
|
|
/**
|
|
* Create a new callable dispatcher instance.
|
|
*
|
|
* @param \Illuminate\Container\Container $container
|
|
* @return void
|
|
*/
|
|
public function __construct(Container $container)
|
|
{
|
|
$this->container = $container;
|
|
}
|
|
|
|
/**
|
|
* Dispatch a request to a given callable.
|
|
*
|
|
* @param \Illuminate\Routing\Route $route
|
|
* @param callable $callable
|
|
* @return mixed
|
|
*/
|
|
public function dispatch(Route $route, $callable)
|
|
{
|
|
return $callable(...array_values($this->resolveParameters($route, $callable)));
|
|
}
|
|
|
|
/**
|
|
* Resolve the parameters for the callable.
|
|
*
|
|
* @param \Illuminate\Routing\Route $route
|
|
* @param callable $callable
|
|
* @return array
|
|
*/
|
|
protected function resolveParameters(Route $route, $callable)
|
|
{
|
|
return $this->resolveMethodDependencies($route->parametersWithoutNulls(), new ReflectionFunction($callable));
|
|
}
|
|
}
|