Вход Регистрация
Файл: onlinepoisk.wm-scripts.ru/vendor/silex/silex/silex/src/Silex/EventListener/MiddlewareListener.php
Строк: 163
<?php

/*
 * This file is part of the Silex framework.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace SilexEventListener;

use 
SymfonyComponentHttpKernelKernelEvents;
use 
SymfonyComponentHttpKernelEventGetResponseEvent;
use 
SymfonyComponentHttpKernelEventFilterResponseEvent;
use 
SymfonyComponentHttpFoundationResponse;
use 
SymfonyComponentEventDispatcherEventSubscriberInterface;
use 
SilexApplication;

/**
 * Manages the route middlewares.
 *
 * @author Fabien Potencier <fabien@symfony.com>
 */
class MiddlewareListener implements EventSubscriberInterface
{
    protected 
$app;

    
/**
     * Constructor.
     *
     * @param Application $app An Application instance
     */
    
public function __construct(Application $app)
    {
        
$this->app $app;
    }

    
/**
     * Runs before filters.
     *
     * @param GetResponseEvent $event The event to handle
     */
    
public function onKernelRequest(GetResponseEvent $event)
    {
        
$request $event->getRequest();
        
$routeName $request->attributes->get('_route');
        if (!
$route $this->app['routes']->get($routeName)) {
            return;
        }

        foreach ((array) 
$route->getOption('_before_middlewares') as $callback) {
            
$ret call_user_func($callback$request$this->app);
            if (
$ret instanceof Response) {
                
$event->setResponse($ret);

                return;
            } elseif (
null !== $ret) {
                throw new 
RuntimeException(sprintf('A before middleware for route "%s" returned an invalid response value. Must return null or an instance of Response.'$routeName));
            }
        }
    }

    
/**
     * Runs after filters.
     *
     * @param FilterResponseEvent $event The event to handle
     */
    
public function onKernelResponse(FilterResponseEvent $event)
    {
        
$request $event->getRequest();
        
$routeName $request->attributes->get('_route');
        if (!
$route $this->app['routes']->get($routeName)) {
            return;
        }

        foreach ((array) 
$route->getOption('_after_middlewares') as $callback) {
            
$response call_user_func($callback$request$event->getResponse(), $this->app);
            if (
$response instanceof Response) {
                
$event->setResponse($response);
            } elseif (
null !== $response) {
                throw new 
RuntimeException(sprintf('An after middleware for route "%s" returned an invalid response value. Must return null or an instance of Response.'$routeName));
            }
        }
    }

    public static function 
getSubscribedEvents()
    {
        return array(
            
// this must be executed after the late events defined with before() (and their priority is 512)
            
KernelEvents::REQUEST  => array('onKernelRequest', -1024),
            
KernelEvents::RESPONSE => array('onKernelResponse'128),
        );
    }
}
Онлайн: 0
Реклама