vendor/symfony/framework-bundle/Resources/config/services.php line 130

  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\Component\DependencyInjection\Loader\Configurator;
  11. use Psr\Clock\ClockInterface as PsrClockInterface;
  12. use Psr\EventDispatcher\EventDispatcherInterface as PsrEventDispatcherInterface;
  13. use Symfony\Bundle\FrameworkBundle\CacheWarmer\ConfigBuilderCacheWarmer;
  14. use Symfony\Bundle\FrameworkBundle\HttpCache\HttpCache;
  15. use Symfony\Component\Clock\ClockInterface;
  16. use Symfony\Component\Clock\NativeClock;
  17. use Symfony\Component\Config\Loader\LoaderInterface;
  18. use Symfony\Component\Config\Resource\SelfCheckingResourceChecker;
  19. use Symfony\Component\Config\ResourceCheckerConfigCacheFactory;
  20. use Symfony\Component\Console\ConsoleEvents;
  21. use Symfony\Component\DependencyInjection\Config\ContainerParametersResourceChecker;
  22. use Symfony\Component\DependencyInjection\EnvVarProcessor;
  23. use Symfony\Component\DependencyInjection\ParameterBag\ContainerBag;
  24. use Symfony\Component\DependencyInjection\ParameterBag\ContainerBagInterface;
  25. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  26. use Symfony\Component\DependencyInjection\ReverseContainer;
  27. use Symfony\Component\EventDispatcher\EventDispatcher;
  28. use Symfony\Component\EventDispatcher\EventDispatcherInterface as EventDispatcherInterfaceComponentAlias;
  29. use Symfony\Component\Filesystem\Filesystem;
  30. use Symfony\Component\Form\FormEvents;
  31. use Symfony\Component\HttpFoundation\Request;
  32. use Symfony\Component\HttpFoundation\RequestStack;
  33. use Symfony\Component\HttpFoundation\Response;
  34. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  35. use Symfony\Component\HttpFoundation\UrlHelper;
  36. use Symfony\Component\HttpKernel\CacheClearer\ChainCacheClearer;
  37. use Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerAggregate;
  38. use Symfony\Component\HttpKernel\Config\FileLocator;
  39. use Symfony\Component\HttpKernel\DependencyInjection\ServicesResetter;
  40. use Symfony\Component\HttpKernel\EventListener\LocaleAwareListener;
  41. use Symfony\Component\HttpKernel\HttpCache\Store;
  42. use Symfony\Component\HttpKernel\HttpCache\StoreInterface;
  43. use Symfony\Component\HttpKernel\HttpKernel;
  44. use Symfony\Component\HttpKernel\HttpKernelInterface;
  45. use Symfony\Component\HttpKernel\KernelEvents;
  46. use Symfony\Component\HttpKernel\KernelInterface;
  47. use Symfony\Component\HttpKernel\UriSigner;
  48. use Symfony\Component\Runtime\Runner\Symfony\HttpKernelRunner;
  49. use Symfony\Component\Runtime\Runner\Symfony\ResponseRunner;
  50. use Symfony\Component\Runtime\SymfonyRuntime;
  51. use Symfony\Component\String\LazyString;
  52. use Symfony\Component\String\Slugger\AsciiSlugger;
  53. use Symfony\Component\String\Slugger\SluggerInterface;
  54. use Symfony\Component\Workflow\WorkflowEvents;
  55. use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
  56. return static function (ContainerConfigurator $container) {
  57.     // this parameter is used at compile time in RegisterListenersPass
  58.     $container->parameters()->set('event_dispatcher.event_aliases'array_merge(
  59.         class_exists(ConsoleEvents::class) ? ConsoleEvents::ALIASES : [],
  60.         class_exists(FormEvents::class) ? FormEvents::ALIASES : [],
  61.         KernelEvents::ALIASES,
  62.         class_exists(WorkflowEvents::class) ? WorkflowEvents::ALIASES : []
  63.     ));
  64.     $container->services()
  65.         ->set('parameter_bag'ContainerBag::class)
  66.             ->args([
  67.                 service('service_container'),
  68.             ])
  69.         ->alias(ContainerBagInterface::class, 'parameter_bag')
  70.         ->alias(ParameterBagInterface::class, 'parameter_bag')
  71.         ->set('event_dispatcher'EventDispatcher::class)
  72.             ->public()
  73.             ->tag('container.hot_path')
  74.             ->tag('event_dispatcher.dispatcher', ['name' => 'event_dispatcher'])
  75.         ->alias(EventDispatcherInterfaceComponentAlias::class, 'event_dispatcher')
  76.         ->alias(EventDispatcherInterface::class, 'event_dispatcher')
  77.         ->alias(PsrEventDispatcherInterface::class, 'event_dispatcher')
  78.         ->set('http_kernel'HttpKernel::class)
  79.             ->public()
  80.             ->args([
  81.                 service('event_dispatcher'),
  82.                 service('controller_resolver'),
  83.                 service('request_stack'),
  84.                 service('argument_resolver'),
  85.                 false,
  86.             ])
  87.             ->tag('container.hot_path')
  88.             ->tag('container.preload', ['class' => HttpKernelRunner::class])
  89.             ->tag('container.preload', ['class' => ResponseRunner::class])
  90.             ->tag('container.preload', ['class' => SymfonyRuntime::class])
  91.         ->alias(HttpKernelInterface::class, 'http_kernel')
  92.         ->set('request_stack'RequestStack::class)
  93.             ->public()
  94.         ->alias(RequestStack::class, 'request_stack')
  95.         ->set('http_cache'HttpCache::class)
  96.             ->args([
  97.                 service('kernel'),
  98.                 service('http_cache.store'),
  99.                 service('esi')->nullOnInvalid(),
  100.                 abstract_arg('options'),
  101.             ])
  102.             ->tag('container.hot_path')
  103.         ->set('http_cache.store'Store::class)
  104.             ->args([
  105.                 param('kernel.cache_dir').'/http_cache',
  106.             ])
  107.         ->alias(StoreInterface::class, 'http_cache.store')
  108.         ->set('url_helper'UrlHelper::class)
  109.             ->args([
  110.                 service('request_stack'),
  111.                 service('router')->ignoreOnInvalid(),
  112.             ])
  113.         ->alias(UrlHelper::class, 'url_helper')
  114.         ->set('cache_warmer'CacheWarmerAggregate::class)
  115.             ->public()
  116.             ->args([
  117.                 tagged_iterator('kernel.cache_warmer'),
  118.                 param('kernel.debug'),
  119.                 sprintf('%s/%sDeprecations.log'param('kernel.build_dir'), param('kernel.container_class')),
  120.             ])
  121.             ->tag('container.no_preload')
  122.         ->set('cache_clearer'ChainCacheClearer::class)
  123.             ->args([
  124.                 tagged_iterator('kernel.cache_clearer'),
  125.             ])
  126.         ->set('kernel')
  127.             ->synthetic()
  128.             ->public()
  129.         ->alias(KernelInterface::class, 'kernel')
  130.         ->set('filesystem'Filesystem::class)
  131.         ->alias(Filesystem::class, 'filesystem')
  132.         ->set('file_locator'FileLocator::class)
  133.             ->args([
  134.                 service('kernel'),
  135.             ])
  136.         ->alias(FileLocator::class, 'file_locator')
  137.         ->set('uri_signer'UriSigner::class)
  138.             ->args([
  139.                 param('kernel.secret'),
  140.             ])
  141.         ->alias(UriSigner::class, 'uri_signer')
  142.         ->set('config_cache_factory'ResourceCheckerConfigCacheFactory::class)
  143.             ->args([
  144.                 tagged_iterator('config_cache.resource_checker'),
  145.             ])
  146.         ->set('dependency_injection.config.container_parameters_resource_checker'ContainerParametersResourceChecker::class)
  147.             ->args([
  148.                 service('service_container'),
  149.             ])
  150.             ->tag('config_cache.resource_checker', ['priority' => -980])
  151.         ->set('config.resource.self_checking_resource_checker'SelfCheckingResourceChecker::class)
  152.             ->tag('config_cache.resource_checker', ['priority' => -990])
  153.         ->set('services_resetter'ServicesResetter::class)
  154.             ->public()
  155.         ->set('reverse_container'ReverseContainer::class)
  156.             ->args([
  157.                 service('service_container'),
  158.                 service_locator([]),
  159.             ])
  160.         ->alias(ReverseContainer::class, 'reverse_container')
  161.         ->set('locale_aware_listener'LocaleAwareListener::class)
  162.             ->args([
  163.                 [], // locale aware services
  164.                 service('request_stack'),
  165.             ])
  166.             ->tag('kernel.event_subscriber')
  167.         ->set('container.env_var_processor'EnvVarProcessor::class)
  168.             ->args([
  169.                 service('service_container'),
  170.                 tagged_iterator('container.env_var_loader'),
  171.             ])
  172.             ->tag('container.env_var_processor')
  173.         ->set('slugger'AsciiSlugger::class)
  174.             ->args([
  175.                 param('kernel.default_locale'),
  176.             ])
  177.             ->tag('kernel.locale_aware')
  178.         ->alias(SluggerInterface::class, 'slugger')
  179.         ->set('container.getenv'\Closure::class)
  180.             ->factory([\Closure::class, 'fromCallable'])
  181.             ->args([
  182.                 [service('service_container'), 'getEnv'],
  183.             ])
  184.             ->tag('routing.expression_language_function', ['function' => 'env'])
  185.         ->set('container.get_routing_condition_service'\Closure::class)
  186.             ->public()
  187.             ->factory([\Closure::class, 'fromCallable'])
  188.             ->args([
  189.                 [tagged_locator('routing.condition_service''alias'), 'get'],
  190.             ])
  191.             ->tag('routing.expression_language_function', ['function' => 'service'])
  192.         // inherit from this service to lazily access env vars
  193.         ->set('container.env'LazyString::class)
  194.             ->abstract()
  195.             ->factory([LazyString::class, 'fromCallable'])
  196.             ->args([
  197.                 service('container.getenv'),
  198.             ])
  199.         ->set('config_builder.warmer'ConfigBuilderCacheWarmer::class)
  200.             ->args([service(KernelInterface::class), service('logger')->nullOnInvalid()])
  201.             ->tag('kernel.cache_warmer')
  202.         ->set('clock'NativeClock::class)
  203.         ->alias(ClockInterface::class, 'clock')
  204.         ->alias(PsrClockInterface::class, 'clock')
  205.         // register as abstract and excluded, aka not-autowirable types
  206.         ->set(LoaderInterface::class)->abstract()->tag('container.excluded')
  207.         ->set(Request::class)->abstract()->tag('container.excluded')
  208.         ->set(Response::class)->abstract()->tag('container.excluded')
  209.         ->set(SessionInterface::class)->abstract()->tag('container.excluded')
  210.     ;
  211. };