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

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