Вход Регистрация
Файл: onlinepoisk.wm-scripts.ru/vendor/silex/silex/silex/src/Silex/ServiceControllerResolver.php
Строк: 83
<?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 Silex;

use 
SilexApplication;
use 
SymfonyComponentHttpFoundationRequest;
use 
SymfonyComponentHttpKernelControllerControllerResolverInterface;

/**
 * Enables name_of_service:method_name syntax for declaring controllers.
 *
 * @link http://silex.sensiolabs.org/doc/cookbook/controllers_as_services.html
 */
class ServiceControllerResolver implements ControllerResolverInterface
{
    const 
SERVICE_PATTERN "/[A-Za-z0-9._-]+:[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*/";

    protected 
$resolver;
    protected 
$app;

    
/**
     * Constructor.
     *
     * @param ControllerResolverInterface $resolver A ControllerResolverInterface instance to delegate to
     * @param Application                 $app      An Application instance
     */
    
public function __construct(ControllerResolverInterface $resolverApplication $app)
    {
        
$this->resolver $resolver;
        
$this->app $app;
    }

    
/**
     * {@inheritdoc}
     */
    
public function getController(Request $request)
    {
        
$controller $request->attributes->get('_controller'null);

        if (!
is_string($controller) || !preg_match(static::SERVICE_PATTERN$controller)) {
            return 
$this->resolver->getController($request);
        }

        list(
$service$method) = explode(':'$controller2);

        if (!isset(
$this->app[$service])) {
            throw new 
InvalidArgumentException(sprintf('Service "%s" does not exist.'$service));
        }

        return array(
$this->app[$service], $method);
    }

    
/**
     * {@inheritdoc}
     */
    
public function getArguments(Request $request$controller)
    {
        return 
$this->resolver->getArguments($request$controller);
    }
}
Онлайн: 0
Реклама