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

namespace IlluminateRouting;

use 
IlluminateSupportServiceProvider;
use 
ZendDiactorosResponse as PsrResponse;
use 
SymfonyBridgePsrHttpMessageFactoryDiactorosFactory;

class 
RoutingServiceProvider extends ServiceProvider
{
    
/**
     * Register the service provider.
     *
     * @return void
     */
    
public function register()
    {
        
$this->registerRouter();

        
$this->registerUrlGenerator();

        
$this->registerRedirector();

        
$this->registerPsrRequest();

        
$this->registerPsrResponse();

        
$this->registerResponseFactory();
    }

    
/**
     * Register the router instance.
     *
     * @return void
     */
    
protected function registerRouter()
    {
        
$this->app['router'] = $this->app->share(function ($app) {
            return new 
Router($app['events'], $app);
        });
    }

    
/**
     * Register the URL generator service.
     *
     * @return void
     */
    
protected function registerUrlGenerator()
    {
        
$this->app['url'] = $this->app->share(function ($app) {
            
$routes $app['router']->getRoutes();

            
// The URL generator needs the route collection that exists on the router.
            // Keep in mind this is an object, so we're passing by references here
            // and all the registered routes will be available to the generator.
            
$app->instance('routes'$routes);

            
$url = new UrlGenerator(
                
$routes$app->rebinding(
                    
'request'$this->requestRebinder()
                )
            );

            
$url->setSessionResolver(function () {
                return 
$this->app['session'];
            });

            
// If the route collection is "rebound", for example, when the routes stay
            // cached for the application, we will need to rebind the routes on the
            // URL generator instance so it has the latest version of the routes.
            
$app->rebinding('routes', function ($app$routes) {
                
$app['url']->setRoutes($routes);
            });

            return 
$url;
        });
    }

    
/**
     * Get the URL generator request rebinder.
     *
     * @return Closure
     */
    
protected function requestRebinder()
    {
        return function (
$app$request) {
            
$app['url']->setRequest($request);
        };
    }

    
/**
     * Register the Redirector service.
     *
     * @return void
     */
    
protected function registerRedirector()
    {
        
$this->app['redirect'] = $this->app->share(function ($app) {
            
$redirector = new Redirector($app['url']);

            
// If the session is set on the application instance, we'll inject it into
            // the redirector instance. This allows the redirect responses to allow
            // for the quite convenient "with" methods that flash to the session.
            
if (isset($app['session.store'])) {
                
$redirector->setSession($app['session.store']);
            }

            return 
$redirector;
        });
    }

    
/**
     * Register a binding for the PSR-7 request implementation.
     *
     * @return void
     */
    
protected function registerPsrRequest()
    {
        
$this->app->bind('PsrHttpMessageServerRequestInterface', function ($app) {
            return (new 
DiactorosFactory)->createRequest($app->make('request'));
        });
    }

    
/**
     * Register a binding for the PSR-7 response implementation.
     *
     * @return void
     */
    
protected function registerPsrResponse()
    {
        
$this->app->bind('PsrHttpMessageResponseInterface', function ($app) {
            return new 
PsrResponse();
        });
    }

    
/**
     * Register the response factory implementation.
     *
     * @return void
     */
    
protected function registerResponseFactory()
    {
        
$this->app->singleton('IlluminateContractsRoutingResponseFactory', function ($app) {
            return new 
ResponseFactory($app['IlluminateContractsViewFactory'], $app['redirect']);
        });
    }
}
Онлайн: 2
Реклама