ee17131fca
Useful if an application provides their own base Controller that references items in the container. It also makes it simpler for that base controller to add additional optional dependencies by only overriding getSubscribedServices instead of having to reimplement setContainer and use ControllerTrait.
73 lines
2.4 KiB
PHP
73 lines
2.4 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of the Symfony package.
|
|
*
|
|
* (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 Symfony\Bundle\FrameworkBundle\Controller;
|
|
|
|
use Psr\Container\ContainerInterface;
|
|
use Doctrine\Common\Persistence\ManagerRegistry;
|
|
use Symfony\Component\DependencyInjection\ServiceSubscriberInterface;
|
|
use Symfony\Component\Form\FormFactoryInterface;
|
|
use Symfony\Component\HttpFoundation\RequestStack;
|
|
use Symfony\Component\HttpFoundation\Session\SessionInterface;
|
|
use Symfony\Component\HttpKernel\HttpKernelInterface;
|
|
use Symfony\Component\Routing\RouterInterface;
|
|
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
|
|
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
|
|
use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface;
|
|
use Symfony\Component\Serializer\SerializerInterface;
|
|
use Symfony\Component\Templating\EngineInterface;
|
|
use Twig\Environment;
|
|
|
|
/**
|
|
* Provides common features needed in controllers.
|
|
*
|
|
* @author Fabien Potencier <fabien@symfony.com>
|
|
*/
|
|
abstract class AbstractController implements ServiceSubscriberInterface
|
|
{
|
|
use ControllerTrait;
|
|
|
|
/**
|
|
* @var ContainerInterface
|
|
*/
|
|
protected $container;
|
|
|
|
/**
|
|
* @internal
|
|
* @required
|
|
*/
|
|
public function setContainer(ContainerInterface $container)
|
|
{
|
|
$previous = $this->container;
|
|
$this->container = $container;
|
|
|
|
return $previous;
|
|
}
|
|
|
|
public static function getSubscribedServices()
|
|
{
|
|
return array(
|
|
'router' => '?'.RouterInterface::class,
|
|
'request_stack' => '?'.RequestStack::class,
|
|
'http_kernel' => '?'.HttpKernelInterface::class,
|
|
'serializer' => '?'.SerializerInterface::class,
|
|
'session' => '?'.SessionInterface::class,
|
|
'security.authorization_checker' => '?'.AuthorizationCheckerInterface::class,
|
|
'templating' => '?'.EngineInterface::class,
|
|
'twig' => '?'.Environment::class,
|
|
'doctrine' => '?'.ManagerRegistry::class,
|
|
'form.factory' => '?'.FormFactoryInterface::class,
|
|
'security.token_storage' => '?'.TokenStorageInterface::class,
|
|
'security.csrf.token_manager' => '?'.CsrfTokenManagerInterface::class,
|
|
);
|
|
}
|
|
}
|