vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/EventListener/ResolveControllerNameSubscriber.php line 62

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the Symfony package.
  4.  *
  5.  * (c) Fabien Potencier <fabien@symfony.com>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace Symfony\Bundle\FrameworkBundle\EventListener;
  11. use Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser;
  12. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  13. use Symfony\Component\HttpKernel\Event\RequestEvent;
  14. use Symfony\Component\HttpKernel\KernelEvents;
  15. /**
  16.  * Guarantees that the _controller key is parsed into its final format.
  17.  *
  18.  * @author Ryan Weaver <ryan@knpuniversity.com>
  19.  *
  20.  * @method onKernelRequest(RequestEvent $event)
  21.  *
  22.  * @deprecated since Symfony 4.1
  23.  */
  24. class ResolveControllerNameSubscriber implements EventSubscriberInterface
  25. {
  26.     private $parser;
  27.     public function __construct(ControllerNameParser $parserbool $triggerDeprecation true)
  28.     {
  29.         if ($triggerDeprecation) {
  30.             @trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.1.'__CLASS__), \E_USER_DEPRECATED);
  31.         }
  32.         $this->parser $parser;
  33.     }
  34.     /**
  35.      * @internal
  36.      */
  37.     public function resolveControllerName(...$args)
  38.     {
  39.         $this->onKernelRequest(...$args);
  40.     }
  41.     public function __call(string $method, array $args)
  42.     {
  43.         if ('onKernelRequest' !== $method && 'onKernelRequest' !== strtolower($method)) {
  44.             throw new \Error(sprintf('Error: Call to undefined method "%s::%s()".', static::class, $method));
  45.         }
  46.         $event $args[0];
  47.         $controller $event->getRequest()->attributes->get('_controller');
  48.         if (\is_string($controller) && false === strpos($controller'::') && === substr_count($controller':')) {
  49.             // controller in the a:b:c notation then
  50.             $event->getRequest()->attributes->set('_controller'$parsedNotation $this->parser->parse($controllerfalse));
  51.             @trigger_error(sprintf('Referencing controllers with %s is deprecated since Symfony 4.1, use "%s" instead.'$controller$parsedNotation), \E_USER_DEPRECATED);
  52.         }
  53.     }
  54.     public static function getSubscribedEvents()
  55.     {
  56.         return [
  57.             KernelEvents::REQUEST => ['resolveControllerName'24],
  58.         ];
  59.     }
  60. }