Вход Регистрация
Файл: vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php
Строк: 109
<?php

namespace IlluminateRouting;

use 
IlluminateContainerContainer;
use 
IlluminateRoutingContractsControllerDispatcher as ControllerDispatcherContract;

class 
ControllerDispatcher implements ControllerDispatcherContract
{
    use 
FiltersControllerMiddlewareResolvesRouteDependencies;

    
/**
     * The container instance.
     *
     * @var IlluminateContainerContainer
     */
    
protected $container;

    
/**
     * Create a new controller dispatcher instance.
     *
     * @param  IlluminateContainerContainer  $container
     * @return void
     */
    
public function __construct(Container $container)
    {
        
$this->container $container;
    }

    
/**
     * Dispatch a request to a given controller and method.
     *
     * @param  IlluminateRoutingRoute  $route
     * @param  mixed  $controller
     * @param  string  $method
     * @return mixed
     */
    
public function dispatch(Route $route$controller$method)
    {
        
$parameters $this->resolveParameters($route$controller$method);

        if (
method_exists($controller'callAction')) {
            return 
$controller->callAction($method$parameters);
        }

        return 
$controller->{$method}(...array_values($parameters));
    }

    
/**
     * Resolve the parameters for the controller.
     *
     * @param  IlluminateRoutingRoute  $route
     * @param  mixed  $controller
     * @param  string  $method
     * @return array
     */
    
protected function resolveParameters(Route $route$controller$method)
    {
        return 
$this->resolveClassMethodDependencies(
            
$route->parametersWithoutNulls(), $controller$method
        
);
    }

    
/**
     * Get the middleware for the controller instance.
     *
     * @param  IlluminateRoutingController  $controller
     * @param  string  $method
     * @return array
     */
    
public function getMiddleware($controller$method)
    {
        if (! 
method_exists($controller'getMiddleware')) {
            return [];
        }

        return 
collect($controller->getMiddleware())->reject(function ($data) use ($method) {
            return static::
methodExcludedByOptions($method$data['options']);
        })->
pluck('middleware')->all();
    }
}
Онлайн: 0
Реклама