core.services.yml

Same filename in other branches
  1. 8.9.x core/core.services.yml
  2. 10 core/core.services.yml
  3. 11.x core/core.services.yml
core/core.services.yml

File

core/core.services.yml

View source
  1. parameters:
  2. # The app.root and site.path parameters are dynamically set by
  3. # \Drupal\Core\DrupalKernel::initializeContainer(). They are listed here to
  4. # allow IDEs to autocomplete them when writing new service YAML files.
  5. app.root: ''
  6. site.path: ''
  7. session.storage.options:
  8. gc_probability: 1
  9. gc_divisor: 100
  10. gc_maxlifetime: 200000
  11. cookie_lifetime: 2000000
  12. sid_length: 48
  13. sid_bits_per_character: 6
  14. twig.config:
  15. debug: false
  16. auto_reload: null
  17. cache: true
  18. allowed_file_extensions:
  19. - css
  20. - html
  21. - js
  22. - svg
  23. - twig
  24. renderer.config:
  25. required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions']
  26. auto_placeholder_conditions:
  27. max-age: 0
  28. contexts: ['session', 'user']
  29. tags: []
  30. debug: false
  31. factory.keyvalue:
  32. default: keyvalue.database
  33. http.response.debug_cacheability_headers: false
  34. factory.keyvalue.expirable:
  35. default: keyvalue.expirable.database
  36. filter_protocols:
  37. - http
  38. - https
  39. - ftp
  40. - news
  41. - nntp
  42. - tel
  43. - telnet
  44. - mailto
  45. - irc
  46. - ssh
  47. - sftp
  48. - webcal
  49. - rtsp
  50. cors.config:
  51. enabled: false
  52. allowedHeaders: []
  53. allowedMethods: []
  54. allowedOrigins: ['*']
  55. exposedHeaders: false
  56. maxAge: false
  57. supportsCredentials: false
  58. tempstore.expire: 604800
  59. services:
  60. # Simple cache contexts, directly derived from the request context.
  61. cache_context.ip:
  62. class: Drupal\Core\Cache\Context\IpCacheContext
  63. arguments: ['@request_stack']
  64. tags:
  65. - { name: cache.context }
  66. cache_context.protocol_version:
  67. class: Drupal\Core\Cache\Context\ProtocolVersionCacheContext
  68. arguments: ['@request_stack']
  69. tags:
  70. - { name: cache.context }
  71. cache_context.headers:
  72. class: Drupal\Core\Cache\Context\HeadersCacheContext
  73. arguments: ['@request_stack']
  74. tags:
  75. - { name: cache.context }
  76. cache_context.cookies:
  77. class: Drupal\Core\Cache\Context\CookiesCacheContext
  78. arguments: ['@request_stack']
  79. tags:
  80. - { name: cache.context }
  81. cache_context.session:
  82. class: Drupal\Core\Cache\Context\SessionCacheContext
  83. arguments: ['@request_stack']
  84. tags:
  85. - { name: cache.context}
  86. cache_context.session.exists:
  87. class: Drupal\Core\Cache\Context\SessionExistsCacheContext
  88. arguments: ['@session_configuration', '@request_stack']
  89. tags:
  90. - { name: cache.context}
  91. cache_context.request_format:
  92. class: Drupal\Core\Cache\Context\RequestFormatCacheContext
  93. arguments: ['@request_stack']
  94. tags:
  95. - { name: cache.context }
  96. cache_context.url:
  97. class: Drupal\Core\Cache\Context\UrlCacheContext
  98. arguments: ['@request_stack']
  99. tags:
  100. - { name: cache.context }
  101. cache_context.url.site:
  102. class: Drupal\Core\Cache\Context\SiteCacheContext
  103. arguments: ['@request_stack']
  104. tags:
  105. - { name: cache.context }
  106. cache_context.url.path:
  107. class: Drupal\Core\Cache\Context\PathCacheContext
  108. arguments: ['@request_stack']
  109. tags:
  110. - { name: cache.context }
  111. cache_context.url.path.parent:
  112. class: Drupal\Core\Cache\Context\PathParentCacheContext
  113. arguments: ['@request_stack']
  114. tags:
  115. - { name: cache.context }
  116. cache_context.url.path.is_front:
  117. class: Drupal\Core\Cache\Context\IsFrontPathCacheContext
  118. arguments: ['@path.matcher']
  119. tags:
  120. - { name: cache.context }
  121. cache_context.url.query_args:
  122. class: Drupal\Core\Cache\Context\QueryArgsCacheContext
  123. arguments: ['@request_stack']
  124. tags:
  125. - { name: cache.context }
  126. cache_context.url.query_args.pagers:
  127. class: Drupal\Core\Cache\Context\PagersCacheContext
  128. arguments: ['@pager.parameters']
  129. tags:
  130. - { name: cache.context }
  131. # Complex cache contexts, that depend on the routing system.
  132. cache_context.route:
  133. class: Drupal\Core\Cache\Context\RouteCacheContext
  134. arguments: ['@current_route_match']
  135. tags:
  136. - { name: cache.context }
  137. cache_context.route.name:
  138. class: Drupal\Core\Cache\Context\RouteNameCacheContext
  139. arguments: ['@current_route_match']
  140. tags:
  141. - { name: cache.context }
  142. cache_context.route.menu_active_trails:
  143. class: Drupal\Core\Cache\Context\MenuActiveTrailsCacheContext
  144. calls:
  145. - [setContainer, ['@service_container']]
  146. tags:
  147. - { name: cache.context }
  148. # Complex cache contexts, that may be calculated from a combination of
  149. # multiple aspects of the request context plus additional logic. Hence they
  150. # are their own roots.
  151. cache_context.user:
  152. class: Drupal\Core\Cache\Context\UserCacheContext
  153. arguments: ['@current_user']
  154. tags:
  155. - { name: cache.context}
  156. cache_context.user.permissions:
  157. class: Drupal\Core\Cache\Context\AccountPermissionsCacheContext
  158. arguments: ['@current_user', '@user_permissions_hash_generator']
  159. tags:
  160. - { name: cache.context}
  161. cache_context.user.roles:
  162. class: Drupal\Core\Cache\Context\UserRolesCacheContext
  163. arguments: ['@current_user']
  164. tags:
  165. - { name: cache.context}
  166. cache_context.user.is_super_user:
  167. class: Drupal\Core\Cache\Context\IsSuperUserCacheContext
  168. arguments: ['@current_user']
  169. tags:
  170. - { name: cache.context}
  171. cache_context.languages:
  172. class: Drupal\Core\Cache\Context\LanguagesCacheContext
  173. arguments: ['@language_manager']
  174. tags:
  175. - { name: cache.context}
  176. cache_context.theme:
  177. class: Drupal\Core\Cache\Context\ThemeCacheContext
  178. arguments: ['@theme.manager']
  179. tags:
  180. - { name: cache.context}
  181. cache_context.timezone:
  182. class: Drupal\Core\Cache\Context\TimeZoneCacheContext
  183. tags:
  184. - { name: cache.context}
  185. cache_factory:
  186. class: Drupal\Core\Cache\CacheFactory
  187. arguments: ['@settings', '%cache_default_bin_backends%']
  188. calls:
  189. - [setContainer, ['@service_container']]
  190. cache_contexts_manager:
  191. class: Drupal\Core\Cache\Context\CacheContextsManager
  192. arguments: ['@service_container', '%cache_contexts%' ]
  193. cache_tags.invalidator:
  194. parent: container.trait
  195. class: Drupal\Core\Cache\CacheTagsInvalidator
  196. calls:
  197. - [setContainer, ['@service_container']]
  198. tags:
  199. - { name: service_collector, call: addInvalidator, tag: cache_tags_invalidator }
  200. cache_tags.invalidator.checksum:
  201. class: Drupal\Core\Cache\DatabaseCacheTagsChecksum
  202. arguments: ['@database']
  203. tags:
  204. - { name: cache_tags_invalidator}
  205. - { name: backend_overridable }
  206. cache.backend.chainedfast:
  207. class: Drupal\Core\Cache\ChainedFastBackendFactory
  208. arguments: ['@settings']
  209. calls:
  210. - [setContainer, ['@service_container']]
  211. cache.backend.database:
  212. class: Drupal\Core\Cache\DatabaseBackendFactory
  213. arguments: ['@database', '@cache_tags.invalidator.checksum', '@settings']
  214. tags:
  215. - { name: backend_overridable }
  216. cache.backend.apcu:
  217. class: Drupal\Core\Cache\ApcuBackendFactory
  218. arguments: ['%app.root%', '%site.path%', '@cache_tags.invalidator.checksum']
  219. cache.backend.php:
  220. class: Drupal\Core\Cache\PhpBackendFactory
  221. arguments: ['@cache_tags.invalidator.checksum']
  222. cache.backend.memory:
  223. class: Drupal\Core\Cache\MemoryBackendFactory
  224. # A special cache bin that does not persist beyond the length of the request.
  225. cache.static:
  226. class: Drupal\Core\Cache\CacheBackendInterface
  227. tags:
  228. - { name: cache.bin, default_backend: cache.backend.memory }
  229. factory: ['@cache_factory', 'get']
  230. arguments: [static]
  231. cache.bootstrap:
  232. class: Drupal\Core\Cache\CacheBackendInterface
  233. tags:
  234. - { name: cache.bin, default_backend: cache.backend.chainedfast }
  235. factory: ['@cache_factory', 'get']
  236. arguments: [bootstrap]
  237. cache.config:
  238. class: Drupal\Core\Cache\CacheBackendInterface
  239. tags:
  240. - { name: cache.bin, default_backend: cache.backend.chainedfast }
  241. factory: ['@cache_factory', 'get']
  242. arguments: [config]
  243. cache.default:
  244. class: Drupal\Core\Cache\CacheBackendInterface
  245. tags:
  246. - { name: cache.bin }
  247. factory: ['@cache_factory', 'get']
  248. arguments: [default]
  249. cache.entity:
  250. class: Drupal\Core\Cache\CacheBackendInterface
  251. tags:
  252. - { name: cache.bin }
  253. factory: ['@cache_factory', 'get']
  254. arguments: [entity]
  255. cache.menu:
  256. class: Drupal\Core\Cache\CacheBackendInterface
  257. tags:
  258. - { name: cache.bin }
  259. factory: ['@cache_factory', 'get']
  260. arguments: [menu]
  261. cache.render:
  262. class: Drupal\Core\Cache\CacheBackendInterface
  263. tags:
  264. - { name: cache.bin }
  265. factory: ['@cache_factory', 'get']
  266. arguments: [render]
  267. cache.data:
  268. class: Drupal\Core\Cache\CacheBackendInterface
  269. tags:
  270. - { name: cache.bin }
  271. factory: ['@cache_factory', 'get']
  272. arguments: [data]
  273. cache.discovery:
  274. class: Drupal\Core\Cache\CacheBackendInterface
  275. tags:
  276. - { name: cache.bin, default_backend: cache.backend.chainedfast }
  277. factory: ['@cache_factory', 'get']
  278. arguments: [discovery]
  279. cache_router_rebuild_subscriber:
  280. class: Drupal\Core\EventSubscriber\CacheRouterRebuildSubscriber
  281. tags:
  282. - { name: event_subscriber }
  283. page_cache_request_policy:
  284. class: Drupal\Core\PageCache\DefaultRequestPolicy
  285. arguments: ['@session_configuration']
  286. tags:
  287. - { name: service_collector, tag: page_cache_request_policy, call: addPolicy}
  288. page_cache_response_policy:
  289. class: Drupal\Core\PageCache\ChainResponsePolicy
  290. tags:
  291. - { name: service_collector, tag: page_cache_response_policy, call: addPolicy}
  292. lazy: true
  293. page_cache_kill_switch:
  294. class: Drupal\Core\PageCache\ResponsePolicy\KillSwitch
  295. tags:
  296. - { name: page_cache_response_policy }
  297. - { name: dynamic_page_cache_response_policy }
  298. page_cache_no_cache_routes:
  299. class: Drupal\Core\PageCache\ResponsePolicy\DenyNoCacheRoutes
  300. arguments: ['@current_route_match']
  301. public: false
  302. tags:
  303. - { name: page_cache_response_policy }
  304. - { name: dynamic_page_cache_response_policy }
  305. page_cache_no_server_error:
  306. class: Drupal\Core\PageCache\ResponsePolicy\NoServerError
  307. public: false
  308. tags:
  309. - { name: page_cache_response_policy }
  310. - { name: dynamic_page_cache_response_policy }
  311. config.manager:
  312. class: Drupal\Core\Config\ConfigManager
  313. arguments: ['@entity_type.manager', '@config.factory', '@config.typed', '@string_translation', '@config.storage', '@event_dispatcher', '@entity.repository', '@extension.path.resolver']
  314. config.factory:
  315. class: Drupal\Core\Config\ConfigFactory
  316. tags:
  317. - { name: event_subscriber }
  318. - { name: service_collector, tag: 'config.factory.override', call: addOverride }
  319. arguments: ['@config.storage', '@event_dispatcher', '@config.typed']
  320. config.importer_subscriber:
  321. class: Drupal\Core\Config\Importer\FinalMissingContentSubscriber
  322. tags:
  323. - { name: event_subscriber }
  324. config.installer:
  325. class: Drupal\Core\Config\ConfigInstaller
  326. arguments: ['@config.factory', '@config.storage', '@config.typed', '@config.manager', '@event_dispatcher', '%install_profile%', '@extension.path.resolver']
  327. lazy: true
  328. config.storage:
  329. class: Drupal\Core\Config\CachedStorage
  330. arguments: ['@config.storage.active', '@cache.config']
  331. config.storage.active:
  332. class: Drupal\Core\Config\DatabaseStorage
  333. arguments: ['@database', 'config']
  334. public: false
  335. tags:
  336. - { name: backend_overridable }
  337. config.import_transformer:
  338. class: Drupal\Core\Config\ImportStorageTransformer
  339. arguments: ['@event_dispatcher', '@database', '@lock', '@lock.persistent']
  340. config.storage.export:
  341. class: Drupal\Core\Config\ManagedStorage
  342. arguments: ['@config.storage.export.manager']
  343. config.storage.export.manager:
  344. class: Drupal\Core\Config\ExportStorageManager
  345. arguments: ['@config.storage', '@database', '@event_dispatcher', '@lock']
  346. public: false
  347. config.storage.sync:
  348. class: Drupal\Core\Config\FileStorage
  349. factory: Drupal\Core\Config\FileStorageFactory::getSync
  350. config.storage.staging:
  351. alias: config.storage.sync
  352. deprecated: The "%alias_id%" service is deprecated in drupal:8.0.0 and is removed from drupal:10.0.0. Use the "config.storage.sync" service instead. See https://www.drupal.org/node/2574957
  353. config.storage.snapshot:
  354. class: Drupal\Core\Config\DatabaseStorage
  355. arguments: ['@database', config_snapshot]
  356. tags:
  357. - { name: backend_overridable }
  358. config.storage.schema:
  359. class: Drupal\Core\Config\ExtensionInstallStorage
  360. arguments: ['@config.storage', 'config/schema', '', true, '%install_profile%']
  361. config.typed:
  362. class: Drupal\Core\Config\TypedConfigManager
  363. arguments: ['@config.storage', '@config.storage.schema', '@cache.discovery', '@module_handler', '@class_resolver']
  364. tags:
  365. - { name: plugin_manager_cache_clear }
  366. calls:
  367. - [setValidationConstraintManager, ['@validation.constraint']]
  368. context.handler:
  369. class: Drupal\Core\Plugin\Context\ContextHandler
  370. context.repository:
  371. class: Drupal\Core\Plugin\Context\LazyContextRepository
  372. arguments: ['@service_container']
  373. Drupal\Component\DependencyInjection\ReverseContainer:
  374. arguments: [ '@service_container' ]
  375. cron:
  376. class: Drupal\Core\Cron
  377. arguments: ['@module_handler', '@lock', '@queue', '@state', '@account_switcher', '@logger.channel.cron', '@plugin.manager.queue_worker', '@datetime.time']
  378. lazy: true
  379. diff.formatter:
  380. class: Drupal\Core\Diff\DiffFormatter
  381. arguments: ['@config.factory']
  382. database:
  383. class: Drupal\Core\Database\Connection
  384. factory: Drupal\Core\Database\Database::getConnection
  385. arguments: [default]
  386. database.replica:
  387. class: Drupal\Core\Database\Connection
  388. factory: Drupal\Core\Database\Database::getConnection
  389. arguments: [replica]
  390. database.replica_kill_switch:
  391. class: Drupal\Core\Database\ReplicaKillSwitch
  392. arguments: ['@settings', '@datetime.time', '@session']
  393. tags:
  394. - { name: event_subscriber }
  395. datetime.time:
  396. class: Drupal\Component\Datetime\Time
  397. arguments: ['@request_stack']
  398. file_system:
  399. class: Drupal\Core\File\FileSystem
  400. arguments: ['@stream_wrapper_manager', '@settings', '@logger.channel.file']
  401. file_url_generator:
  402. class: Drupal\Core\File\FileUrlGenerator
  403. arguments: ['@stream_wrapper_manager', '@request_stack', '@module_handler']
  404. form_builder:
  405. class: Drupal\Core\Form\FormBuilder
  406. arguments: ['@form_validator', '@form_submitter', '@form_cache', '@module_handler', '@event_dispatcher', '@request_stack', '@class_resolver', '@element_info', '@theme.manager', '@?csrf_token']
  407. form_validator:
  408. class: Drupal\Core\Form\FormValidator
  409. arguments: ['@request_stack', '@string_translation', '@csrf_token', '@logger.channel.form', '@form_error_handler']
  410. form_submitter:
  411. class: Drupal\Core\Form\FormSubmitter
  412. arguments: ['@request_stack', '@url_generator']
  413. form_error_handler:
  414. class: Drupal\Core\Form\FormErrorHandler
  415. form_cache:
  416. class: Drupal\Core\Form\FormCache
  417. arguments: ['%app.root%', '@keyvalue.expirable', '@module_handler', '@current_user', '@csrf_token', '@logger.channel.form', '@request_stack', '@page_cache_request_policy']
  418. public: false # Private to form_builder
  419. keyvalue:
  420. class: Drupal\Core\KeyValueStore\KeyValueFactory
  421. arguments: ['@service_container', '%factory.keyvalue%']
  422. keyvalue.database:
  423. class: Drupal\Core\KeyValueStore\KeyValueDatabaseFactory
  424. arguments: ['@serialization.phpserialize', '@database']
  425. keyvalue.expirable:
  426. class: Drupal\Core\KeyValueStore\KeyValueExpirableFactory
  427. arguments: ['@service_container', '%factory.keyvalue.expirable%']
  428. keyvalue.expirable.database:
  429. class: Drupal\Core\KeyValueStore\KeyValueDatabaseExpirableFactory
  430. arguments: ['@serialization.phpserialize', '@database']
  431. logger.factory:
  432. class: Drupal\Core\Logger\LoggerChannelFactory
  433. parent: container.trait
  434. tags:
  435. - { name: service_collector, tag: logger, call: addLogger }
  436. logger.channel_base:
  437. abstract: true
  438. class: Drupal\Core\Logger\LoggerChannel
  439. factory: ['@logger.factory', 'get']
  440. logger.channel.default:
  441. parent: logger.channel_base
  442. arguments: ['system']
  443. logger.channel.php:
  444. parent: logger.channel_base
  445. arguments: ['php']
  446. logger.channel.image:
  447. parent: logger.channel_base
  448. arguments: ['image']
  449. logger.channel.cron:
  450. parent: logger.channel_base
  451. arguments: ['cron']
  452. logger.channel.file:
  453. class: Drupal\Core\Logger\LoggerChannel
  454. factory: ['@logger.factory', 'get']
  455. arguments: ['file']
  456. logger.channel.form:
  457. parent: logger.channel_base
  458. arguments: ['form']
  459. logger.channel.security:
  460. parent: logger.channel_base
  461. arguments: ['security']
  462. logger.log_message_parser:
  463. class: Drupal\Core\Logger\LogMessageParser
  464. serialization.json:
  465. class: Drupal\Component\Serialization\Json
  466. serialization.phpserialize:
  467. class: Drupal\Component\Serialization\PhpSerialize
  468. serialization.yaml:
  469. class: Drupal\Component\Serialization\Yaml
  470. settings:
  471. class: Drupal\Core\Site\Settings
  472. factory: Drupal\Core\Site\Settings::getInstance
  473. state:
  474. class: Drupal\Core\State\State
  475. arguments: ['@keyvalue']
  476. queue:
  477. class: Drupal\Core\Queue\QueueFactory
  478. arguments: ['@settings']
  479. calls:
  480. - [setContainer, ['@service_container']]
  481. queue.database:
  482. class: Drupal\Core\Queue\QueueDatabaseFactory
  483. arguments: ['@database']
  484. path.current:
  485. class: Drupal\Core\Path\CurrentPathStack
  486. arguments: ['@request_stack']
  487. http_handler_stack:
  488. class: GuzzleHttp\HandlerStack
  489. public: false
  490. factory: GuzzleHttp\HandlerStack::create
  491. configurator: ['@http_handler_stack_configurator', configure]
  492. http_handler_stack_configurator:
  493. class: Drupal\Core\Http\HandlerStackConfigurator
  494. public: false
  495. arguments: ['@service_container']
  496. tags:
  497. - { name: service_id_collector, tag: http_client_middleware }
  498. http_client:
  499. class: GuzzleHttp\Client
  500. factory: ['@http_client_factory', 'fromOptions']
  501. http_client_factory:
  502. class: Drupal\Core\Http\ClientFactory
  503. arguments: ['@http_handler_stack']
  504. plugin.manager.link_relation_type:
  505. class: \Drupal\Core\Http\LinkRelationTypeManager
  506. arguments: ['%app.root%', '@module_handler', '@cache.discovery']
  507. theme.negotiator:
  508. class: Drupal\Core\Theme\ThemeNegotiator
  509. arguments: ['@access_check.theme', '@class_resolver']
  510. tags:
  511. - { name: service_id_collector, tag: theme_negotiator }
  512. theme.negotiator.default:
  513. class: Drupal\Core\Theme\DefaultNegotiator
  514. arguments: ['@config.factory']
  515. tags:
  516. - { name: theme_negotiator, priority: -100 }
  517. theme.negotiator.ajax_base_page:
  518. class: Drupal\Core\Theme\AjaxBasePageNegotiator
  519. arguments: ['@csrf_token', '@config.factory', '@request_stack']
  520. tags:
  521. - { name: theme_negotiator, priority: 1000 }
  522. container.namespaces:
  523. class: ArrayObject
  524. arguments: [ '%container.namespaces%' ]
  525. container.trait:
  526. abstract: true
  527. calls:
  528. - [setContainer, ['@service_container']]
  529. default_plugin_manager:
  530. abstract: true
  531. arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
  532. module_handler:
  533. class: Drupal\Core\Extension\ModuleHandler
  534. arguments: ['%app.root%', '%container.modules%', '@cache.bootstrap']
  535. module_installer:
  536. class: Drupal\Core\Extension\ModuleInstaller
  537. tags:
  538. - { name: service_collector, tag: 'module_install.uninstall_validator', call: addUninstallValidator }
  539. arguments: ['%app.root%', '@module_handler', '@kernel', '@database', '@update.update_hook_registry']
  540. lazy: true
  541. extension.list.module:
  542. class: Drupal\Core\Extension\ModuleExtensionList
  543. arguments: ['%app.root%', 'module', '@cache.default', '@info_parser', '@module_handler', '@state', '@config.factory', '@extension.list.profile', '%install_profile%', '%container.modules%']
  544. extension.list.profile:
  545. class: Drupal\Core\Extension\ProfileExtensionList
  546. arguments: ['%app.root%', 'profile', '@cache.default', '@info_parser', '@module_handler', '@state', '%install_profile%']
  547. extension.list.theme:
  548. class: Drupal\Core\Extension\ThemeExtensionList
  549. arguments: ['%app.root%', 'theme', '@cache.default', '@info_parser', '@module_handler', '@state', '@config.factory', '@extension.list.theme_engine', '%install_profile%']
  550. extension.list.theme_engine:
  551. class: Drupal\Core\Extension\ThemeEngineExtensionList
  552. arguments: ['%app.root%', 'theme_engine', '@cache.default', '@info_parser', '@module_handler', '@state', '%install_profile%']
  553. extension.path.resolver:
  554. class: Drupal\Core\Extension\ExtensionPathResolver
  555. arguments: ['@extension.list.module', '@extension.list.profile', '@extension.list.theme', '@extension.list.theme_engine']
  556. content_uninstall_validator:
  557. class: Drupal\Core\Entity\ContentUninstallValidator
  558. tags:
  559. - { name: module_install.uninstall_validator }
  560. arguments: ['@entity_type.manager', '@string_translation']
  561. lazy: true
  562. required_module_uninstall_validator:
  563. class: Drupal\Core\Extension\RequiredModuleUninstallValidator
  564. tags:
  565. - { name: module_install.uninstall_validator }
  566. arguments: ['@string_translation', '@extension.list.module']
  567. lazy: true
  568. module_required_by_themes_uninstall_validator:
  569. class: Drupal\Core\Extension\ModuleRequiredByThemesUninstallValidator
  570. tags:
  571. - { name: module_install.uninstall_validator }
  572. arguments: ['@string_translation', '@extension.list.module', '@extension.list.theme']
  573. lazy: true
  574. database_driver_uninstall_validator:
  575. class: Drupal\Core\Extension\DatabaseDriverUninstallValidator
  576. tags:
  577. - { name: module_install.uninstall_validator }
  578. arguments: ['@string_translation', '@extension.list.module', '@database']
  579. lazy: true
  580. theme_handler:
  581. class: Drupal\Core\Extension\ThemeHandler
  582. arguments: ['%app.root%', '@config.factory', '@extension.list.theme']
  583. theme_installer:
  584. class: Drupal\Core\Extension\ThemeInstaller
  585. arguments: ['@theme_handler', '@config.factory', '@config.installer', '@module_handler', '@config.manager', '@asset.css.collection_optimizer', '@router.builder', '@logger.channel.default', '@state', '@extension.list.module']
  586. entity.memory_cache:
  587. class: Drupal\Core\Cache\MemoryCache\MemoryCache
  588. entity_type.manager:
  589. class: Drupal\Core\Entity\EntityTypeManager
  590. arguments: ['@container.namespaces', '@module_handler', '@cache.discovery', '@string_translation', '@class_resolver', '@entity.last_installed_schema.repository']
  591. parent: container.trait
  592. tags:
  593. - { name: plugin_manager_cache_clear }
  594. entity_type.repository:
  595. class: Drupal\Core\Entity\EntityTypeRepository
  596. arguments: ['@entity_type.manager']
  597. entity_type.bundle.info:
  598. class: Drupal\Core\Entity\EntityTypeBundleInfo
  599. arguments: ['@entity_type.manager', '@language_manager', '@module_handler', '@typed_data_manager', '@cache.discovery']
  600. entity.repository:
  601. class: Drupal\Core\Entity\EntityRepository
  602. arguments: ['@entity_type.manager', '@language_manager', '@context.repository']
  603. entity_display.repository:
  604. class: Drupal\Core\Entity\EntityDisplayRepository
  605. arguments: ['@entity_type.manager', '@module_handler', '@cache.discovery', '@language_manager']
  606. entity_field.manager:
  607. class: Drupal\Core\Entity\EntityFieldManager
  608. arguments: ['@entity_type.manager', '@entity_type.bundle.info', '@entity_display.repository', '@typed_data_manager', '@language_manager', '@keyvalue', '@module_handler', '@cache.discovery', '@entity.last_installed_schema.repository']
  609. entity_type.listener:
  610. class: Drupal\Core\Entity\EntityTypeListener
  611. arguments: ['@entity_type.manager', '@entity_field.manager', '@event_dispatcher', '@entity.last_installed_schema.repository']
  612. entity_bundle.listener:
  613. class: Drupal\Core\Entity\EntityBundleListener
  614. arguments: ['@entity_type.manager', '@entity_type.bundle.info', '@entity_field.manager', '@module_handler']
  615. entity_route_subscriber:
  616. class: Drupal\Core\EventSubscriber\EntityRouteProviderSubscriber
  617. arguments: ['@entity_type.manager']
  618. tags:
  619. - { name: event_subscriber }
  620. entity.definition_update_manager:
  621. class: Drupal\Core\Entity\EntityDefinitionUpdateManager
  622. arguments: ['@entity_type.manager', '@entity.last_installed_schema.repository', '@entity_field.manager', '@entity_type.listener', '@field_storage_definition.listener']
  623. entity.last_installed_schema.repository:
  624. class: Drupal\Core\Entity\EntityLastInstalledSchemaRepository
  625. arguments: ['@keyvalue', '@cache.discovery']
  626. entity_field.deleted_fields_repository:
  627. class: Drupal\Core\Field\DeletedFieldsRepository
  628. arguments: ['@state']
  629. field_storage_definition.listener:
  630. class: Drupal\Core\Field\FieldStorageDefinitionListener
  631. arguments: ['@entity_type.manager', '@event_dispatcher', '@entity.last_installed_schema.repository', '@entity_field.manager', '@entity_field.deleted_fields_repository']
  632. field_definition.listener:
  633. class: Drupal\Core\Field\FieldDefinitionListener
  634. arguments: ['@entity_type.manager', '@entity_field.manager', '@keyvalue', '@cache.discovery']
  635. entity.form_builder:
  636. class: Drupal\Core\Entity\EntityFormBuilder
  637. arguments: ['@entity_type.manager', '@form_builder']
  638. entity.bundle_config_import_validator:
  639. class: Drupal\Core\Entity\Event\BundleConfigImportValidate
  640. arguments: ['@config.manager', '@entity_type.manager']
  641. tags:
  642. - { name: event_subscriber }
  643. entity.autocomplete_matcher:
  644. class: Drupal\Core\Entity\EntityAutocompleteMatcher
  645. arguments: ['@plugin.manager.entity_reference_selection']
  646. plugin_form.factory:
  647. class: Drupal\Core\Plugin\PluginFormFactory
  648. arguments: ['@class_resolver']
  649. plugin.manager.entity_reference_selection:
  650. class: Drupal\Core\Entity\EntityReferenceSelection\SelectionPluginManager
  651. parent: default_plugin_manager
  652. plugin.manager.block:
  653. class: Drupal\Core\Block\BlockManager
  654. parent: default_plugin_manager
  655. arguments: ['@logger.channel.default']
  656. plugin.manager.field.field_type:
  657. class: Drupal\Core\Field\FieldTypePluginManager
  658. arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@typed_data_manager']
  659. plugin.manager.field.widget:
  660. class: Drupal\Core\Field\WidgetPluginManager
  661. arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@plugin.manager.field.field_type']
  662. plugin.manager.field.formatter:
  663. class: Drupal\Core\Field\FormatterPluginManager
  664. arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@plugin.manager.field.field_type']
  665. plugin.manager.archiver:
  666. class: Drupal\Core\Archiver\ArchiverManager
  667. parent: default_plugin_manager
  668. arguments: ['@file_system']
  669. plugin.manager.action:
  670. class: Drupal\Core\Action\ActionManager
  671. arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
  672. plugin.manager.menu.link:
  673. class: Drupal\Core\Menu\MenuLinkManager
  674. arguments: ['@menu.tree_storage', '@menu_link.static.overrides', '@module_handler']
  675. menu.link_tree:
  676. class: Drupal\Core\Menu\MenuLinkTree
  677. arguments: ['@menu.tree_storage', '@plugin.manager.menu.link', '@router.route_provider', '@menu.active_trail', '@controller_resolver']
  678. menu.default_tree_manipulators:
  679. class: Drupal\Core\Menu\DefaultMenuLinkTreeManipulators
  680. arguments: ['@access_manager', '@current_user', '@entity_type.manager']
  681. menu.active_trail:
  682. class: Drupal\Core\Menu\MenuActiveTrail
  683. arguments: ['@plugin.manager.menu.link', '@current_route_match', '@cache.menu', '@lock']
  684. tags:
  685. - { name: needs_destruction }
  686. menu.parent_form_selector:
  687. class: Drupal\Core\Menu\MenuParentFormSelector
  688. arguments: ['@menu.link_tree', '@entity_type.manager', '@string_translation']
  689. plugin.manager.menu.local_action:
  690. class: Drupal\Core\Menu\LocalActionManager
  691. arguments: ['@http_kernel.controller.argument_resolver', '@request_stack', '@current_route_match', '@router.route_provider', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user']
  692. plugin.manager.menu.local_task:
  693. class: Drupal\Core\Menu\LocalTaskManager
  694. arguments: ['@http_kernel.controller.argument_resolver', '@request_stack', '@current_route_match', '@router.route_provider', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user']
  695. plugin.manager.menu.contextual_link:
  696. class: Drupal\Core\Menu\ContextualLinkManager
  697. arguments: ['@controller_resolver', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user', '@request_stack']
  698. plugin.manager.display_variant:
  699. class: Drupal\Core\Display\VariantManager
  700. parent: default_plugin_manager
  701. plugin.manager.queue_worker:
  702. class: Drupal\Core\Queue\QueueWorkerManager
  703. parent: default_plugin_manager
  704. plugin.cache_clearer:
  705. class: Drupal\Core\Plugin\CachedDiscoveryClearer
  706. lazy: true
  707. paramconverter.menu_link:
  708. class: Drupal\Core\ParamConverter\MenuLinkPluginConverter
  709. tags:
  710. - { name: paramconverter }
  711. arguments: ['@plugin.manager.menu.link']
  712. lazy: true
  713. menu.tree_storage:
  714. class: Drupal\Core\Menu\MenuTreeStorage
  715. arguments: ['@database', '@cache.menu', '@cache_tags.invalidator', 'menu_tree']
  716. public: false # Private to plugin.manager.menu.link and menu.link_tree
  717. tags:
  718. - { name: backend_overridable }
  719. menu_link.static.overrides:
  720. class: Drupal\Core\Menu\StaticMenuLinkOverrides
  721. arguments: ['@config.factory']
  722. request_stack:
  723. class: Drupal\Core\Http\RequestStack
  724. tags:
  725. - { name: persist }
  726. current_route_match:
  727. class: Drupal\Core\Routing\CurrentRouteMatch
  728. arguments: ['@request_stack']
  729. event_dispatcher:
  730. class: Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher
  731. arguments: ['@service_container']
  732. app.root:
  733. class: \SplString
  734. factory: ['@app.root.factory', 'get']
  735. deprecated: The "%service_id%" service is deprecated in drupal:9.0.0 and is removed from drupal:10.0.0. Use the app.root parameter instead. See https://www.drupal.org/node/3080612
  736. tags:
  737. - { name: parameter_service }
  738. app.root.factory:
  739. class: Drupal\Core\AppRootFactory
  740. arguments: ['@kernel']
  741. public: false
  742. deprecated: The "%service_id%" service is deprecated in drupal:9.0.0 and is removed from drupal:10.0.0. Use the app.root parameter instead. See https://www.drupal.org/node/3080612
  743. site.path:
  744. class: \SplString
  745. factory: ['@site.path.factory', 'get']
  746. deprecated: The "%service_id%" service is deprecated in drupal:9.0.0 and is removed from drupal:10.0.0. Use the site.path parameter instead. See https://www.drupal.org/node/3080612
  747. tags:
  748. - { name: parameter_service }
  749. site.path.factory:
  750. class: Drupal\Core\SitePathFactory
  751. arguments: ['@kernel']
  752. public: false
  753. deprecated: The "%service_id%" service is deprecated in drupal:9.0.0 and is removed from drupal:10.0.0. Use the site.path parameter instead. See https://www.drupal.org/node/3080612
  754. controller_resolver:
  755. class: Drupal\Core\Controller\ControllerResolver
  756. arguments: ['@psr7.http_message_factory', '@class_resolver']
  757. class_resolver:
  758. class: Drupal\Core\DependencyInjection\ClassResolver
  759. calls:
  760. - [setContainer, ['@service_container']]
  761. title_resolver:
  762. class: Drupal\Core\Controller\TitleResolver
  763. arguments: ['@controller_resolver', '@string_translation', '@http_kernel.controller.argument_resolver']
  764. http_kernel:
  765. class: Stack\StackedHttpKernel
  766. http_kernel.basic:
  767. class: Symfony\Component\HttpKernel\HttpKernel
  768. arguments: ['@event_dispatcher', '@controller_resolver', '@request_stack', '@http_kernel.controller.argument_resolver']
  769. http_kernel.controller.argument_resolver:
  770. class: Symfony\Component\HttpKernel\Controller\ArgumentResolver
  771. arguments: ['@http_kernel.controller.argument_metadata_factory', ['@argument_resolver.request_attribute', '@argument_resolver.request', '@argument_resolver.psr7_request', '@argument_resolver.route_match', '@argument_resolver.default']]
  772. http_kernel.controller.argument_metadata_factory:
  773. class: Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactory
  774. public: false
  775. argument_resolver.request_attribute:
  776. class: Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestAttributeValueResolver
  777. public: false
  778. argument_resolver.request:
  779. class: Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestValueResolver
  780. public: false
  781. argument_resolver.psr7_request:
  782. class: Drupal\Core\Controller\ArgumentResolver\Psr7RequestValueResolver
  783. arguments: ['@psr7.http_message_factory']
  784. public: false
  785. argument_resolver.route_match:
  786. class: Drupal\Core\Controller\ArgumentResolver\RouteMatchValueResolver
  787. public: false
  788. argument_resolver.default:
  789. class: Symfony\Component\HttpKernel\Controller\ArgumentResolver\DefaultValueResolver
  790. public: false
  791. http_middleware.negotiation:
  792. class: Drupal\Core\StackMiddleware\NegotiationMiddleware
  793. tags:
  794. - { name: http_middleware, priority: 400 }
  795. http_middleware.reverse_proxy:
  796. class: Drupal\Core\StackMiddleware\ReverseProxyMiddleware
  797. arguments: ['@settings']
  798. tags:
  799. - { name: http_middleware, priority: 300 }
  800. http_middleware.kernel_pre_handle:
  801. class: Drupal\Core\StackMiddleware\KernelPreHandle
  802. arguments: ['@kernel']
  803. tags:
  804. - { name: http_middleware, priority: 100 }
  805. http_middleware.session:
  806. class: Drupal\Core\StackMiddleware\Session
  807. tags:
  808. - { name: http_middleware, priority: 50 }
  809. calls:
  810. - [setContainer, ['@service_container']]
  811. http_middleware.cors:
  812. class: Asm89\Stack\Cors
  813. arguments: ['%cors.config%']
  814. tags:
  815. - { name: http_middleware, priority: 250 }
  816. psr7.http_foundation_factory:
  817. class: Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory
  818. psr17.server_request_factory:
  819. class: Laminas\Diactoros\ServerRequestFactory
  820. public: false
  821. psr17.stream_factory:
  822. class: Laminas\Diactoros\StreamFactory
  823. public: false
  824. psr17.uploaded_file_factory:
  825. class: Laminas\Diactoros\UploadedFileFactory
  826. public: false
  827. psr17.response_factory:
  828. class: Laminas\Diactoros\ResponseFactory
  829. public: false
  830. psr7.http_message_factory:
  831. class: Symfony\Bridge\PsrHttpMessage\Factory\PsrHttpFactory
  832. arguments: ['@psr17.server_request_factory', '@psr17.stream_factory', '@psr17.uploaded_file_factory', '@psr17.response_factory']
  833. language_manager:
  834. class: Drupal\Core\Language\LanguageManager
  835. arguments: ['@language.default']
  836. language.current_language_context:
  837. class: Drupal\Core\Language\ContextProvider\CurrentLanguageContext
  838. arguments: ['@language_manager']
  839. tags:
  840. - { name: 'context_provider' }
  841. language.default:
  842. class: Drupal\Core\Language\LanguageDefault
  843. arguments: ['%language.default_values%']
  844. string_translator.custom_strings:
  845. class: Drupal\Core\StringTranslation\Translator\CustomStrings
  846. arguments: ['@settings']
  847. tags:
  848. - { name: string_translator, priority: 30 }
  849. string_translation:
  850. class: Drupal\Core\StringTranslation\TranslationManager
  851. arguments: ['@language.default']
  852. tags:
  853. - { name: service_collector, tag: string_translator, call: addTranslator }
  854. typed_data_manager:
  855. class: Drupal\Core\TypedData\TypedDataManager
  856. arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@class_resolver']
  857. calls:
  858. - [setValidationConstraintManager, ['@validation.constraint']]
  859. tags:
  860. - { name: plugin_manager_cache_clear }
  861. validation.constraint:
  862. class: Drupal\Core\Validation\ConstraintManager
  863. parent: default_plugin_manager
  864. tags:
  865. - { name: plugin_manager_cache_clear }
  866. lock:
  867. class: Drupal\Core\Lock\DatabaseLockBackend
  868. arguments: ['@database']
  869. tags:
  870. - { name: backend_overridable }
  871. lazy: true
  872. lock.persistent:
  873. class: Drupal\Core\Lock\PersistentDatabaseLockBackend
  874. arguments: ['@database']
  875. tags:
  876. - { name: backend_overridable }
  877. lazy: true
  878. router.request_context:
  879. class: Drupal\Core\Routing\RequestContext
  880. tags:
  881. - { name: persist }
  882. calls:
  883. - [fromRequestStack, ['@request_stack']]
  884. router.admin_context:
  885. class: Drupal\Core\Routing\AdminContext
  886. arguments: ['@current_route_match']
  887. router.route_provider:
  888. class: Drupal\Core\Routing\RouteProvider
  889. arguments: ['@database', '@state', '@path.current', '@cache.data', '@path_processor_manager', '@cache_tags.invalidator', 'router', '@language_manager']
  890. tags:
  891. - { name: event_subscriber }
  892. - { name: backend_overridable }
  893. router.route_provider.lazy_builder:
  894. class: Drupal\Core\Routing\RouteProviderLazyBuilder
  895. arguments: ['@router.route_provider', '@router.builder']
  896. tags:
  897. - { name: event_subscriber }
  898. router.route_preloader:
  899. class: Drupal\Core\Routing\RoutePreloader
  900. arguments: ['@router.route_provider', '@state', '@cache.bootstrap']
  901. tags:
  902. - { name: 'event_subscriber' }
  903. url_generator.non_bubbling:
  904. class: Drupal\Core\Routing\UrlGenerator
  905. arguments: ['@router.route_provider', '@path_processor_manager', '@route_processor_manager', '@request_stack', '%filter_protocols%']
  906. public: false
  907. calls:
  908. - [setContext, ['@?router.request_context']]
  909. url_generator:
  910. class: Drupal\Core\Render\MetadataBubblingUrlGenerator
  911. arguments: ['@url_generator.non_bubbling', '@renderer']
  912. calls:
  913. - [setContext, ['@?router.request_context']]
  914. redirect.destination:
  915. class: Drupal\Core\Routing\RedirectDestination
  916. arguments: ['@request_stack', '@url_generator']
  917. unrouted_url_assembler:
  918. class: Drupal\Core\Utility\UnroutedUrlAssembler
  919. arguments: ['@request_stack', '@path_processor_manager', '%filter_protocols%']
  920. link_generator:
  921. class: Drupal\Core\Utility\LinkGenerator
  922. arguments: ['@url_generator', '@module_handler', '@renderer']
  923. router:
  924. class: Drupal\Core\Routing\AccessAwareRouter
  925. arguments: ['@router.no_access_checks', '@access_manager', '@current_user']
  926. router.no_access_checks:
  927. class: \Drupal\Core\Routing\Router
  928. arguments: ['@router.route_provider', '@path.current', '@url_generator']
  929. tags:
  930. # @todo Try to combine those tags together, see https://www.drupal.org/node/2915772.
  931. - { name: service_collector, tag: non_lazy_route_enhancer, call: addRouteEnhancer }
  932. - { name: service_collector, tag: route_enhancer, call: addRouteEnhancer }
  933. - { name: service_collector, tag: non_lazy_route_filter, call: addRouteFilter }
  934. - { name: service_collector, tag: route_filter, call: addRouteFilter }
  935. calls:
  936. - [setContext, ['@router.request_context']]
  937. router.path_roots_subscriber:
  938. class: Drupal\Core\EventSubscriber\PathRootsSubscriber
  939. arguments: ['@state']
  940. tags:
  941. - { name: event_subscriber }
  942. entity.query.config:
  943. class: Drupal\Core\Config\Entity\Query\QueryFactory
  944. arguments: ['@config.factory', '@keyvalue', '@config.manager']
  945. tags:
  946. - { name: event_subscriber }
  947. entity.query.sql:
  948. class: Drupal\Core\Entity\Query\Sql\QueryFactory
  949. arguments: ['@database']
  950. tags:
  951. - { name: backend_overridable }
  952. pgsql.entity.query.sql:
  953. class: Drupal\Core\Entity\Query\Sql\pgsql\QueryFactory
  954. arguments: ['@database']
  955. entity.query.null:
  956. class: Drupal\Core\Entity\Query\Null\QueryFactory
  957. entity.query.keyvalue:
  958. class: Drupal\Core\Entity\KeyValueStore\Query\QueryFactory
  959. arguments: ['@keyvalue']
  960. router.dumper:
  961. class: Drupal\Core\Routing\MatcherDumper
  962. arguments: ['@database', '@state']
  963. tags:
  964. - { name: backend_overridable }
  965. lazy: true
  966. router.builder:
  967. class: Drupal\Core\Routing\RouteBuilder
  968. arguments: ['@router.dumper', '@lock', '@event_dispatcher', '@module_handler', '@controller_resolver', '@access_manager.check_provider']
  969. lazy: true
  970. tags:
  971. - { name: needs_destruction }
  972. menu.rebuild_subscriber:
  973. class: Drupal\Core\EventSubscriber\MenuRouterRebuildSubscriber
  974. arguments: ['@lock', '@plugin.manager.menu.link', '@database', '@database.replica_kill_switch']
  975. tags:
  976. - { name: event_subscriber }
  977. path.matcher:
  978. class: Drupal\Core\Path\PathMatcher
  979. arguments: ['@config.factory', '@current_route_match']
  980. path.validator:
  981. class: Drupal\Core\Path\PathValidator
  982. arguments: ['@router', '@router.no_access_checks', '@current_user', '@path_processor_manager']
  983. # The argument to the hashing service defined in services.yml, to the
  984. # constructor of PhpassHashedPassword is the log2 number of iterations for
  985. # password stretching.
  986. # @todo increase by 1 every Drupal version in order to counteract increases in
  987. # the speed and power of computers available to crack the hashes. The current
  988. # password hashing method was introduced in Drupal 7 with a log2 count of 15.
  989. password:
  990. class: Drupal\Core\Password\PhpassHashedPassword
  991. arguments: [16]
  992. password_generator:
  993. class: Drupal\Core\Password\DefaultPasswordGenerator
  994. request_format_route_filter:
  995. class: Drupal\Core\Routing\RequestFormatRouteFilter
  996. tags:
  997. - { name: route_filter }
  998. method_filter:
  999. class: Drupal\Core\Routing\MethodFilter
  1000. tags:
  1001. # The HTTP method route filter must run very early: it removes any routes
  1002. # whose requirements do not allow the HTTP method of the current request.
  1003. # Throws a 405 if no routes match the current request's HTTP method.
  1004. # (If it runs before content_type_header_matcher, it can ensure that only
  1005. # receives routes which can have a Content-Type request header.)
  1006. - { name: route_filter, priority: 10 }
  1007. content_type_header_matcher:
  1008. class: Drupal\Core\Routing\ContentTypeHeaderMatcher
  1009. tags:
  1010. # The Content-Type request header route filter must run early: it removes
  1011. # any routes whose requirements do not allow the Content-Type request
  1012. # header of the current request.
  1013. # Throws a 415 if no routes match the Content-Type request header of the
  1014. # current request, or if it has no Content-Type request header.
  1015. # Note it does nothing for GET requests.
  1016. - { name: route_filter, priority: 5 }
  1017. paramconverter_manager:
  1018. class: Drupal\Core\ParamConverter\ParamConverterManager
  1019. tags:
  1020. - { name: service_collector, tag: paramconverter, call: addConverter }
  1021. paramconverter_subscriber:
  1022. class: Drupal\Core\EventSubscriber\ParamConverterSubscriber
  1023. tags:
  1024. - { name: event_subscriber }
  1025. arguments: ['@paramconverter_manager']
  1026. paramconverter.entity:
  1027. class: Drupal\Core\ParamConverter\EntityConverter
  1028. tags:
  1029. - { name: paramconverter }
  1030. arguments: ['@entity_type.manager', '@entity.repository']
  1031. paramconverter.entity_revision:
  1032. class: Drupal\Core\ParamConverter\EntityRevisionParamConverter
  1033. tags:
  1034. - { name: paramconverter }
  1035. arguments: ['@entity_type.manager', '@entity.repository']
  1036. paramconverter.configentity_admin:
  1037. class: Drupal\Core\ParamConverter\AdminPathConfigEntityConverter
  1038. tags:
  1039. # Use a higher priority than EntityConverter, see the class for details.
  1040. - { name: paramconverter, priority: 5 }
  1041. arguments: ['@entity_type.manager', '@config.factory', '@router.admin_context', '@entity.repository']
  1042. lazy: true
  1043. route_subscriber.module:
  1044. class: Drupal\Core\EventSubscriber\ModuleRouteSubscriber
  1045. tags:
  1046. - { name: event_subscriber }
  1047. arguments: ['@module_handler']
  1048. resolver_manager.entity:
  1049. class: Drupal\Core\Entity\EntityResolverManager
  1050. arguments: ['@entity_type.manager', '@class_resolver']
  1051. route_subscriber.entity:
  1052. class: Drupal\Core\EventSubscriber\EntityRouteAlterSubscriber
  1053. tags:
  1054. - { name: event_subscriber }
  1055. arguments: ['@resolver_manager.entity']
  1056. ajax_response.subscriber:
  1057. class: Drupal\Core\EventSubscriber\AjaxResponseSubscriber
  1058. arguments: ['@ajax_response.attachments_processor']
  1059. tags:
  1060. - { name: event_subscriber }
  1061. form_ajax_subscriber:
  1062. class: Drupal\Core\Form\EventSubscriber\FormAjaxSubscriber
  1063. arguments: ['@form_ajax_response_builder', '@string_translation', '@messenger']
  1064. tags:
  1065. - { name: event_subscriber }
  1066. route_enhancer.param_conversion:
  1067. class: Drupal\Core\Routing\Enhancer\ParamConversionEnhancer
  1068. arguments: ['@paramconverter_manager']
  1069. tags:
  1070. - { name: route_enhancer, priority: 5000 }
  1071. - { name: event_subscriber }
  1072. route_enhancer.form:
  1073. class: Drupal\Core\Routing\Enhancer\FormRouteEnhancer
  1074. tags:
  1075. - { name: route_enhancer }
  1076. route_enhancer.entity:
  1077. class: Drupal\Core\Entity\Enhancer\EntityRouteEnhancer
  1078. tags:
  1079. - { name: route_enhancer, priority: 20 }
  1080. route_enhancer.entity_bundle:
  1081. class: Drupal\Core\Entity\Enhancer\EntityBundleRouteEnhancer
  1082. arguments: ['@entity_type.manager']
  1083. tags:
  1084. - { name: route_enhancer }
  1085. route_enhancer.entity_revision:
  1086. class: Drupal\Core\Routing\Enhancer\EntityRevisionRouteEnhancer
  1087. tags:
  1088. - { name: route_enhancer }
  1089. route_special_attributes_subscriber:
  1090. class: Drupal\Core\EventSubscriber\SpecialAttributesRouteSubscriber
  1091. tags:
  1092. - { name: event_subscriber }
  1093. route_http_method_subscriber:
  1094. class: Drupal\Core\EventSubscriber\RouteMethodSubscriber
  1095. tags:
  1096. - { name: event_subscriber }
  1097. psr_response_view_subscriber:
  1098. class: Drupal\Core\EventSubscriber\PsrResponseSubscriber
  1099. arguments: ['@psr7.http_foundation_factory']
  1100. tags:
  1101. - { name: event_subscriber }
  1102. # Main content view subscriber plus the renderers it uses.
  1103. main_content_view_subscriber:
  1104. class: Drupal\Core\EventSubscriber\MainContentViewSubscriber
  1105. arguments: ['@class_resolver', '@current_route_match', '%main_content_renderers%']
  1106. tags:
  1107. - { name: event_subscriber }
  1108. renderer_non_html:
  1109. class: Drupal\Core\EventSubscriber\RenderArrayNonHtmlSubscriber
  1110. tags:
  1111. - { name: event_subscriber }
  1112. main_content_renderer.html:
  1113. class: Drupal\Core\Render\MainContent\HtmlRenderer
  1114. arguments: ['@title_resolver', '@plugin.manager.display_variant', '@event_dispatcher', '@module_handler', '@renderer', '@render_cache', '%renderer.config%', '@theme.manager']
  1115. tags:
  1116. - { name: render.main_content_renderer, format: html }
  1117. main_content_renderer.ajax:
  1118. class: Drupal\Core\Render\MainContent\AjaxRenderer
  1119. arguments: ['@element_info', '@renderer']
  1120. tags:
  1121. - { name: render.main_content_renderer, format: drupal_ajax }
  1122. - { name: render.main_content_renderer, format: iframeupload }
  1123. main_content_renderer.dialog:
  1124. class: Drupal\Core\Render\MainContent\DialogRenderer
  1125. arguments: ['@title_resolver', '@renderer']
  1126. tags:
  1127. - { name: render.main_content_renderer, format: drupal_dialog }
  1128. main_content_renderer.off_canvas:
  1129. class: Drupal\Core\Render\MainContent\OffCanvasRenderer
  1130. arguments: ['@title_resolver', '@renderer']
  1131. tags:
  1132. - { name: render.main_content_renderer, format: drupal_dialog.off_canvas }
  1133. main_content_renderer.off_canvas_top:
  1134. class: Drupal\Core\Render\MainContent\OffCanvasRenderer
  1135. arguments: ['@title_resolver', '@renderer', 'top']
  1136. tags:
  1137. - { name: render.main_content_renderer, format: drupal_dialog.off_canvas_top }
  1138. main_content_renderer.modal:
  1139. class: Drupal\Core\Render\MainContent\ModalRenderer
  1140. arguments: ['@title_resolver', '@renderer']
  1141. tags:
  1142. - { name: render.main_content_renderer, format: drupal_modal }
  1143. controller.form:
  1144. class: Drupal\Core\Controller\HtmlFormController
  1145. arguments: ['@http_kernel.controller.argument_resolver', '@form_builder', '@class_resolver']
  1146. controller.entity_form:
  1147. class: Drupal\Core\Entity\HtmlEntityFormController
  1148. arguments: ['@http_kernel.controller.argument_resolver', '@form_builder', '@entity_type.manager']
  1149. form_ajax_response_builder:
  1150. class: Drupal\Core\Form\FormAjaxResponseBuilder
  1151. arguments: ['@main_content_renderer.ajax', '@current_route_match']
  1152. router_listener:
  1153. class: Symfony\Component\HttpKernel\EventListener\RouterListener
  1154. tags:
  1155. - { name: event_subscriber }
  1156. arguments: ['@router', '@request_stack', '@router.request_context', NULL]
  1157. options_request_listener:
  1158. class: Drupal\Core\EventSubscriber\OptionsRequestSubscriber
  1159. arguments: ['@router.route_provider']
  1160. tags:
  1161. - { name: event_subscriber }
  1162. bare_html_page_renderer:
  1163. class: Drupal\Core\Render\BareHtmlPageRenderer
  1164. arguments: ['@renderer', '@html_response.attachments_processor']
  1165. lazy: true
  1166. private_key:
  1167. class: Drupal\Core\PrivateKey
  1168. arguments: ['@state']
  1169. csrf_token:
  1170. class: Drupal\Core\Access\CsrfTokenGenerator
  1171. arguments: ['@private_key', '@session_manager.metadata_bag']
  1172. access_arguments_resolver_factory:
  1173. class: Drupal\Core\Access\AccessArgumentsResolverFactory
  1174. access_manager:
  1175. class: Drupal\Core\Access\AccessManager
  1176. arguments: ['@router.route_provider', '@paramconverter_manager', '@access_arguments_resolver_factory', '@current_user', '@access_manager.check_provider']
  1177. access_manager.check_provider:
  1178. class: Drupal\Core\Access\CheckProvider
  1179. calls:
  1180. - [setContainer, ['@service_container']]
  1181. public: false
  1182. access_check.default:
  1183. class: Drupal\Core\Access\DefaultAccessCheck
  1184. tags:
  1185. - { name: access_check, applies_to: _access }
  1186. access_check.entity:
  1187. class: Drupal\Core\Entity\EntityAccessCheck
  1188. tags:
  1189. - { name: access_check, applies_to: _entity_access }
  1190. access_check.entity_bundles:
  1191. # Deprecated in drupal:9.2.0 and is removed from drupal:10.0.0. Specify the
  1192. # list of bundles in the entity parameter, under "bundle" key as a sequence,
  1193. # instead. See https://www.drupal.org/node/3155569.
  1194. class: Drupal\Core\Entity\EntityBundleAccessCheck
  1195. tags:
  1196. - { name: access_check, applies_to: _entity_bundles }
  1197. access_check.entity_create:
  1198. class: Drupal\Core\Entity\EntityCreateAccessCheck
  1199. arguments: ['@entity_type.manager']
  1200. tags:
  1201. - { name: access_check, applies_to: _entity_create_access }
  1202. access_check.entity_create_any:
  1203. class: Drupal\Core\Entity\EntityCreateAnyAccessCheck
  1204. arguments: ['@entity_type.manager', '@entity_type.bundle.info']
  1205. tags:
  1206. - { name: access_check, applies_to: _entity_create_any_access }
  1207. access_check.entity_delete_multiple:
  1208. class: Drupal\Core\Entity\EntityDeleteMultipleAccessCheck
  1209. arguments: ['@entity_type.manager', '@tempstore.private', '@request_stack']
  1210. tags:
  1211. - { name: access_check, applies_to: _entity_delete_multiple_access }
  1212. access_check.theme:
  1213. class: Drupal\Core\Theme\ThemeAccessCheck
  1214. arguments: ['@theme_handler']
  1215. tags:
  1216. - { name: access_check, applies_to: _access_theme }
  1217. access_check.custom:
  1218. class: Drupal\Core\Access\CustomAccessCheck
  1219. arguments: ['@controller_resolver', '@access_arguments_resolver_factory']
  1220. tags:
  1221. - { name: access_check, applies_to: _custom_access }
  1222. access_check.csrf:
  1223. class: Drupal\Core\Access\CsrfAccessCheck
  1224. tags:
  1225. - { name: access_check, applies_to: _csrf_token, needs_incoming_request: TRUE }
  1226. arguments: ['@csrf_token']
  1227. access_check.header.csrf:
  1228. class: Drupal\Core\Access\CsrfRequestHeaderAccessCheck
  1229. arguments: ['@session_configuration', '@csrf_token']
  1230. tags:
  1231. - { name: access_check, needs_incoming_request: TRUE }
  1232. maintenance_mode:
  1233. class: Drupal\Core\Site\MaintenanceMode
  1234. arguments: ['@state', '@config.factory']
  1235. maintenance_mode_subscriber:
  1236. class: Drupal\Core\EventSubscriber\MaintenanceModeSubscriber
  1237. arguments: ['@maintenance_mode', '@config.factory', '@string_translation', '@url_generator', '@current_user', '@bare_html_page_renderer', '@messenger', '@event_dispatcher']
  1238. tags:
  1239. - { name: event_subscriber }
  1240. route_access_response_subscriber:
  1241. class: Drupal\Core\EventSubscriber\RouteAccessResponseSubscriber
  1242. tags:
  1243. - { name: event_subscriber }
  1244. client_error_response_subscriber:
  1245. class: Drupal\Core\EventSubscriber\ClientErrorResponseSubscriber
  1246. tags:
  1247. - { name: event_subscriber }
  1248. anonymous_user_response_subscriber:
  1249. class: Drupal\Core\EventSubscriber\AnonymousUserResponseSubscriber
  1250. tags:
  1251. - { name: event_subscriber }
  1252. arguments: ['@current_user']
  1253. ajax_response.attachments_processor:
  1254. class: Drupal\Core\Ajax\AjaxResponseAttachmentsProcessor
  1255. arguments: ['@asset.resolver', '@config.factory', '@asset.css.collection_renderer', '@asset.js.collection_renderer', '@request_stack', '@renderer', '@module_handler']
  1256. html_response.attachments_processor:
  1257. class: Drupal\Core\Render\HtmlResponseAttachmentsProcessor
  1258. arguments: ['@asset.resolver', '@config.factory', '@asset.css.collection_renderer', '@asset.js.collection_renderer', '@request_stack', '@renderer', '@module_handler']
  1259. html_response.subscriber:
  1260. class: Drupal\Core\EventSubscriber\HtmlResponseSubscriber
  1261. tags:
  1262. - { name: event_subscriber }
  1263. arguments: ['@html_response.attachments_processor']
  1264. finish_response_subscriber:
  1265. class: Drupal\Core\EventSubscriber\FinishResponseSubscriber
  1266. tags:
  1267. - { name: event_subscriber }
  1268. arguments: ['@language_manager', '@config.factory', '@page_cache_request_policy', '@page_cache_response_policy', '@cache_contexts_manager', '%http.response.debug_cacheability_headers%']
  1269. response_generator_subscriber:
  1270. class: Drupal\Core\EventSubscriber\ResponseGeneratorSubscriber
  1271. tags:
  1272. - { name: event_subscriber }
  1273. redirect_response_subscriber:
  1274. class: Drupal\Core\EventSubscriber\RedirectResponseSubscriber
  1275. arguments: ['@unrouted_url_assembler', '@router.request_context']
  1276. tags:
  1277. - { name: event_subscriber }
  1278. redirect_leading_slashes_subscriber:
  1279. class: Drupal\Core\EventSubscriber\RedirectLeadingSlashesSubscriber
  1280. tags:
  1281. - { name: event_subscriber }
  1282. request_close_subscriber:
  1283. class: Drupal\Core\EventSubscriber\RequestCloseSubscriber
  1284. tags:
  1285. - { name: event_subscriber }
  1286. arguments: ['@module_handler']
  1287. config_import_subscriber:
  1288. class: Drupal\Core\EventSubscriber\ConfigImportSubscriber
  1289. tags:
  1290. - { name: event_subscriber }
  1291. - { name: service_collector, tag: 'module_install.uninstall_validator', call: addUninstallValidator }
  1292. arguments: ['@theme_handler', '@extension.list.module']
  1293. config_snapshot_subscriber:
  1294. class: Drupal\Core\EventSubscriber\ConfigSnapshotSubscriber
  1295. tags:
  1296. - { name: event_subscriber }
  1297. arguments: ['@config.manager', '@config.storage', '@config.storage.snapshot']
  1298. config_exclude_modules_subscriber:
  1299. class: Drupal\Core\EventSubscriber\ExcludedModulesEventSubscriber
  1300. arguments: ['@config.storage', '@settings', '@config.manager']
  1301. tags:
  1302. - { name: event_subscriber }
  1303. exception.needs_installer:
  1304. class: Drupal\Core\EventSubscriber\ExceptionDetectNeedsInstallSubscriber
  1305. arguments: ['@database']
  1306. tags:
  1307. - { name: event_subscriber }
  1308. exception.default_json:
  1309. class: Drupal\Core\EventSubscriber\ExceptionJsonSubscriber
  1310. tags:
  1311. - { name: event_subscriber }
  1312. exception.default_html:
  1313. class: Drupal\Core\EventSubscriber\DefaultExceptionHtmlSubscriber
  1314. tags:
  1315. - { name: event_subscriber }
  1316. arguments: ['@http_kernel', '@logger.channel.php', '@redirect.destination', '@router.no_access_checks']
  1317. exception.final:
  1318. class: Drupal\Core\EventSubscriber\FinalExceptionSubscriber
  1319. tags:
  1320. - { name: event_subscriber }
  1321. arguments: ['@config.factory']
  1322. exception.logger:
  1323. class: Drupal\Core\EventSubscriber\ExceptionLoggingSubscriber
  1324. tags:
  1325. - { name: event_subscriber }
  1326. arguments: ['@logger.factory']
  1327. exception.custom_page_html:
  1328. class: Drupal\Core\EventSubscriber\CustomPageExceptionHtmlSubscriber
  1329. tags:
  1330. - { name: event_subscriber }
  1331. arguments: ['@config.factory', '@http_kernel', '@logger.channel.php', '@redirect.destination', '@router.no_access_checks', '@access_manager']
  1332. exception.fast_404_html:
  1333. class: Drupal\Core\EventSubscriber\Fast404ExceptionHtmlSubscriber
  1334. tags:
  1335. - { name: event_subscriber }
  1336. arguments: ['@config.factory', '@cache_tags.invalidator']
  1337. exception.enforced_form_response:
  1338. class: Drupal\Core\EventSubscriber\EnforcedFormResponseSubscriber
  1339. tags:
  1340. - { name: event_subscriber }
  1341. route_processor_manager:
  1342. class: Drupal\Core\RouteProcessor\RouteProcessorManager
  1343. tags:
  1344. - { name: service_collector, tag: route_processor_outbound, call: addOutbound }
  1345. path_processor_manager:
  1346. class: Drupal\Core\PathProcessor\PathProcessorManager
  1347. tags:
  1348. - { name: service_collector, tag: path_processor_inbound, call: addInbound }
  1349. - { name: service_collector, tag: path_processor_outbound, call: addOutbound }
  1350. path_processor_decode:
  1351. class: Drupal\Core\PathProcessor\PathProcessorDecode
  1352. tags:
  1353. - { name: path_processor_inbound, priority: 1000 }
  1354. path_processor_front:
  1355. class: Drupal\Core\PathProcessor\PathProcessorFront
  1356. tags:
  1357. - { name: path_processor_inbound, priority: 200 }
  1358. arguments: ['@config.factory']
  1359. route_processor_current:
  1360. class: Drupal\Core\RouteProcessor\RouteProcessorCurrent
  1361. arguments: ['@current_route_match']
  1362. tags:
  1363. - { name: route_processor_outbound, priority: 200 }
  1364. route_processor_csrf:
  1365. class: Drupal\Core\Access\RouteProcessorCsrf
  1366. tags:
  1367. - { name: route_processor_outbound }
  1368. arguments: ['@csrf_token']
  1369. transliteration:
  1370. class: Drupal\Core\Transliteration\PhpTransliteration
  1371. arguments: [null, '@module_handler']
  1372. flood:
  1373. class: Drupal\Core\Flood\DatabaseBackend
  1374. arguments: ['@database', '@request_stack']
  1375. tags:
  1376. - { name: backend_overridable }
  1377. plugin.manager.mail:
  1378. class: Drupal\Core\Mail\MailManager
  1379. arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@config.factory', '@logger.factory', '@string_translation', '@renderer']
  1380. plugin.manager.condition:
  1381. class: Drupal\Core\Condition\ConditionManager
  1382. parent: default_plugin_manager
  1383. plugin.manager.element_info:
  1384. class: Drupal\Core\Render\ElementInfoManager
  1385. arguments: ['@container.namespaces', '@cache.discovery', '@cache_tags.invalidator', '@module_handler', '@theme.manager']
  1386. stream_wrapper_manager:
  1387. class: Drupal\Core\StreamWrapper\StreamWrapperManager
  1388. calls:
  1389. - [setContainer, ['@service_container']]
  1390. stream_wrapper.public:
  1391. class: Drupal\Core\StreamWrapper\PublicStream
  1392. tags:
  1393. - { name: stream_wrapper, scheme: public }
  1394. stream_wrapper.temporary:
  1395. class: Drupal\Core\StreamWrapper\TemporaryStream
  1396. tags:
  1397. - { name: stream_wrapper, scheme: temporary }
  1398. kernel_destruct_subscriber:
  1399. class: Drupal\Core\EventSubscriber\KernelDestructionSubscriber
  1400. tags:
  1401. - { name: event_subscriber }
  1402. calls:
  1403. - [setContainer, ['@service_container']]
  1404. image.toolkit.manager:
  1405. class: Drupal\Core\ImageToolkit\ImageToolkitManager
  1406. arguments: ['@config.factory']
  1407. parent: default_plugin_manager
  1408. tags:
  1409. - { name: plugin_manager_cache_clear }
  1410. image.toolkit.operation.manager:
  1411. class: Drupal\Core\ImageToolkit\ImageToolkitOperationManager
  1412. arguments: ['@logger.channel.image', '@image.toolkit.manager']
  1413. parent: default_plugin_manager
  1414. tags:
  1415. - { name: plugin_manager_cache_clear }
  1416. image.factory:
  1417. class: Drupal\Core\Image\ImageFactory
  1418. arguments: ['@image.toolkit.manager']
  1419. breadcrumb:
  1420. class: Drupal\Core\Breadcrumb\BreadcrumbManager
  1421. arguments: ['@module_handler']
  1422. tags:
  1423. - { name: service_collector, tag: breadcrumb_builder, call: addBuilder }
  1424. token:
  1425. class: Drupal\Core\Utility\Token
  1426. arguments: ['@module_handler', '@cache.default', '@language_manager', '@cache_tags.invalidator', '@renderer']
  1427. batch.storage:
  1428. class: Drupal\Core\Batch\BatchStorage
  1429. arguments: ['@database', '@session', '@csrf_token']
  1430. tags:
  1431. - { name: backend_overridable }
  1432. lazy: true
  1433. country_manager:
  1434. class: Drupal\Core\Locale\CountryManager
  1435. arguments: ['@module_handler']
  1436. date.formatter:
  1437. class: Drupal\Core\Datetime\DateFormatter
  1438. arguments: ['@entity_type.manager', '@language_manager', '@string_translation', '@config.factory', '@request_stack']
  1439. feed.bridge.reader:
  1440. class: Drupal\Component\Bridge\ZfExtensionManagerSfContainer
  1441. calls:
  1442. - [setContainer, ['@service_container']]
  1443. - [setStandalone, ['\Laminas\Feed\Reader\StandaloneExtensionManager']]
  1444. arguments: ['feed.reader.']
  1445. deprecated: The "%service_id%" service is deprecated in drupal:9.4.0 and is removed from drupal:10.0.0. Use \Laminas\Feed\Reader\StandaloneExtensionManager or create your own service. See https://www.drupal.org/node/3258656
  1446. feed.bridge.writer:
  1447. class: Drupal\Component\Bridge\ZfExtensionManagerSfContainer
  1448. calls:
  1449. - [setContainer, ['@service_container']]
  1450. - [setStandalone, ['\Laminas\Feed\Writer\StandaloneExtensionManager']]
  1451. arguments: ['feed.writer.']
  1452. deprecated: The "%service_id%" service is deprecated in drupal:9.4.0 and is removed from drupal:10.0.0. Use \Laminas\Feed\Writer\StandaloneExtensionManager or create your own service. See https://www.drupal.org/node/3258440
  1453. # Laminas Feed reader plugins. Plugin instances should not be shared.
  1454. feed.reader.dublincoreentry:
  1455. class: Laminas\Feed\Reader\Extension\DublinCore\Entry
  1456. shared: false
  1457. deprecated: The "%service_id%" service is deprecated in drupal:9.4.0 and is removed from drupal:10.0.0. You should use \Drupal::service('feed.bridge.reader')->get('DublinCore\Entry') instead. See https://www.drupal.org/node/2979042
  1458. feed.reader.dublincorefeed:
  1459. class: Laminas\Feed\Reader\Extension\DublinCore\Feed
  1460. shared: false
  1461. deprecated: The "%service_id%" service is deprecated in drupal:9.4.0 and is removed from drupal:10.0.0. You should use \Drupal::service('feed.bridge.reader')->get('DublinCore\Feed') instead. See https://www.drupal.org/node/2979042
  1462. feed.reader.contententry:
  1463. class: Laminas\Feed\Reader\Extension\Content\Entry
  1464. shared: false
  1465. deprecated: The "%service_id%" service is deprecated in drupal:9.4.0 and is removed from drupal:10.0.0. You should use \Drupal::service('feed.bridge.reader')->get('Content\Entry') instead. See https://www.drupal.org/node/2979042
  1466. feed.reader.atomentry:
  1467. class: Laminas\Feed\Reader\Extension\Atom\Entry
  1468. shared: false
  1469. deprecated: The "%service_id%" service is deprecated in drupal:9.4.0 and is removed from drupal:10.0.0. You should use \Drupal::service('feed.bridge.reader')->get('Atom\Entry') instead. See https://www.drupal.org/node/2979042
  1470. feed.reader.atomfeed:
  1471. class: Laminas\Feed\Reader\Extension\Atom\Feed
  1472. shared: false
  1473. deprecated: The "%service_id%" service is deprecated in drupal:9.4.0 and is removed from drupal:10.0.0. You should use \Drupal::service('feed.bridge.reader')->get('Atom\Feed') instead. See https://www.drupal.org/node/2979042
  1474. feed.reader.slashentry:
  1475. class: Laminas\Feed\Reader\Extension\Slash\Entry
  1476. shared: false
  1477. deprecated: The "%service_id%" service is deprecated in drupal:9.4.0 and is removed from drupal:10.0.0. You should use \Drupal::service('feed.bridge.reader')->get('Slash\Entry') instead. See https://www.drupal.org/node/2979042
  1478. feed.reader.wellformedwebentry:
  1479. class: Laminas\Feed\Reader\Extension\WellFormedWeb\Entry
  1480. shared: false
  1481. deprecated: The "%service_id%" service is deprecated in drupal:9.4.0 and is removed from drupal:10.0.0. You should use \Drupal::service('feed.bridge.reader')->get('WellFormedWeb\Entry') instead. See https://www.drupal.org/node/2979042
  1482. feed.reader.threadentry:
  1483. class: Laminas\Feed\Reader\Extension\Thread\Entry
  1484. shared: false
  1485. deprecated: The "%service_id%" service is deprecated in drupal:9.4.0 and is removed from drupal:10.0.0. You should use \Drupal::service('feed.bridge.reader')->get('Thread\Entry') instead. See https://www.drupal.org/node/2979042
  1486. feed.reader.podcastentry:
  1487. class: Laminas\Feed\Reader\Extension\Podcast\Entry
  1488. shared: false
  1489. deprecated: The "%service_id%" service is deprecated in drupal:9.4.0 and is removed from drupal:10.0.0. You should use \Drupal::service('feed.bridge.reader')->get('Podcast\Entry') instead. See https://www.drupal.org/node/2979042
  1490. feed.reader.podcastfeed:
  1491. class: Laminas\Feed\Reader\Extension\Podcast\Feed
  1492. shared: false
  1493. deprecated: The "%service_id%" service is deprecated in drupal:9.4.0 and is removed from drupal:10.0.0. You should use \Drupal::service('feed.bridge.reader')->get('Podcast\Feed') instead. See https://www.drupal.org/node/2979042
  1494. # Laminas Feed writer plugins. Plugins should be set as prototype scope.
  1495. feed.writer.atomrendererfeed:
  1496. class: Laminas\Feed\Writer\Extension\Atom\Renderer\Feed
  1497. shared: false
  1498. deprecated: The "%service_id%" service is deprecated in drupal:9.4.0 and is removed from drupal:10.0.0. You should use \Drupal::service('feed.bridge.writer')->get('Atom\Renderer\Feed') instead. See https://www.drupal.org/node/2979042
  1499. feed.writer.contentrendererentry:
  1500. class: Laminas\Feed\Writer\Extension\Content\Renderer\Entry
  1501. shared: false
  1502. deprecated: The "%service_id%" service is deprecated in drupal:9.4.0 and is removed from drupal:10.0.0. You should use \Drupal::service('feed.bridge.writer')->get('Content\Renderer\Entry') instead. See https://www.drupal.org/node/2979042
  1503. feed.writer.dublincorerendererentry:
  1504. class: Laminas\Feed\Writer\Extension\DublinCore\Renderer\Entry
  1505. shared: false
  1506. deprecated: The "%service_id%" service is deprecated in drupal:9.4.0 and is removed from drupal:10.0.0. You should use \Drupal::service('feed.bridge.writer')->get('DublinCore\Renderer\Entry') instead. See https://www.drupal.org/node/2979042
  1507. feed.writer.dublincorerendererfeed:
  1508. class: Laminas\Feed\Writer\Extension\DublinCore\Renderer\Feed
  1509. shared: false
  1510. deprecated: The "%service_id%" service is deprecated in drupal:9.4.0 and is removed from drupal:10.0.0. You should use \Drupal::service('feed.bridge.writer')->get('DublinCore\Renderer\Feed') instead. See https://www.drupal.org/node/2979042
  1511. feed.writer.itunesentry:
  1512. class: Laminas\Feed\Writer\Extension\ITunes\Entry
  1513. shared: false
  1514. deprecated: The "%service_id%" service is deprecated in drupal:9.4.0 and is removed from drupal:10.0.0. You should use \Drupal::service('feed.bridge.writer')->get('ITunes\Entry') instead. See https://www.drupal.org/node/2979042
  1515. feed.writer.itunesfeed:
  1516. class: Laminas\Feed\Writer\Extension\ITunes\Feed
  1517. shared: false
  1518. deprecated: The "%service_id%" service is deprecated in drupal:9.4.0 and is removed from drupal:10.0.0. You should use \Drupal::service('feed.bridge.writer')->get('ITunes\Feed') instead. See https://www.drupal.org/node/2979042
  1519. feed.writer.itunesrendererentry:
  1520. class: Laminas\Feed\Writer\Extension\ITunes\Renderer\Entry
  1521. shared: false
  1522. deprecated: The "%service_id%" service is deprecated in drupal:9.4.0 and is removed from drupal:10.0.0. You should use \Drupal::service('feed.bridge.writer')->get('ITunes\Renderer\Entry') instead. See https://www.drupal.org/node/2979042
  1523. feed.writer.itunesrendererfeed:
  1524. class: Laminas\Feed\Writer\Extension\ITunes\Renderer\Feed
  1525. shared: false
  1526. deprecated: The "%service_id%" service is deprecated in drupal:9.4.0 and is removed from drupal:10.0.0. You should use \Drupal::service('feed.bridge.writer')->get('ITunes\Renderer\Feed') instead. See https://www.drupal.org/node/2979042
  1527. feed.writer.slashrendererentry:
  1528. class: Laminas\Feed\Writer\Extension\Slash\Renderer\Entry
  1529. shared: false
  1530. deprecated: The "%service_id%" service is deprecated in drupal:9.4.0 and is removed from drupal:10.0.0. You should use \Drupal::service('feed.bridge.writer')->get('Slash\Renderer\Entry') instead. See https://www.drupal.org/node/2979042
  1531. feed.writer.threadingrendererentry:
  1532. class: Laminas\Feed\Writer\Extension\Threading\Renderer\Entry
  1533. shared: false
  1534. deprecated: The "%service_id%" service is deprecated in drupal:9.4.0 and is removed from drupal:10.0.0. You should use \Drupal::service('feed.bridge.writer')->get('Threading\Renderer\Entry') instead. See https://www.drupal.org/node/2979042
  1535. feed.writer.wellformedwebrendererentry:
  1536. class: Laminas\Feed\Writer\Extension\WellFormedWeb\Renderer\Entry
  1537. shared: false
  1538. deprecated: The "%service_id%" service is deprecated in drupal:9.4.0 and is removed from drupal:10.0.0. You should use \Drupal::service('feed.bridge.writer')->get('WellFormedWeb\Renderer\Entry') instead. See https://www.drupal.org/node/2979042
  1539. theme.manager:
  1540. class: Drupal\Core\Theme\ThemeManager
  1541. arguments: ['%app.root%', '@theme.negotiator', '@theme.initialization', '@module_handler']
  1542. calls:
  1543. - [setThemeRegistry, ['@theme.registry']]
  1544. theme.initialization:
  1545. class: Drupal\Core\Theme\ThemeInitialization
  1546. arguments: ['%app.root%', '@theme_handler', '@cache.bootstrap', '@module_handler']
  1547. theme.registry:
  1548. class: Drupal\Core\Theme\Registry
  1549. arguments: ['%app.root%', '@cache.default', '@lock', '@module_handler', '@theme_handler', '@theme.initialization', '@cache.bootstrap', '@extension.list.module']
  1550. tags:
  1551. - { name: needs_destruction }
  1552. calls:
  1553. - [setThemeManager, ['@theme.manager']]
  1554. authentication:
  1555. class: Drupal\Core\Authentication\AuthenticationManager
  1556. arguments: ['@authentication_collector']
  1557. authentication_collector:
  1558. class: Drupal\Core\Authentication\AuthenticationCollector
  1559. tags:
  1560. - { name: service_collector, tag: authentication_provider, call: addProvider }
  1561. authentication_subscriber:
  1562. class: Drupal\Core\EventSubscriber\AuthenticationSubscriber
  1563. arguments: ['@authentication', '@current_user']
  1564. tags:
  1565. - { name: event_subscriber }
  1566. account_switcher:
  1567. class: Drupal\Core\Session\AccountSwitcher
  1568. arguments: ['@current_user', '@session_handler.write_safe']
  1569. user_permissions_hash_generator:
  1570. class: Drupal\Core\Session\PermissionsHashGenerator
  1571. arguments: ['@private_key', '@cache.bootstrap', '@cache.static']
  1572. current_user:
  1573. class: Drupal\Core\Session\AccountProxy
  1574. arguments: ['@event_dispatcher']
  1575. session_configuration:
  1576. class: Drupal\Core\Session\SessionConfiguration
  1577. arguments: ['%session.storage.options%']
  1578. session:
  1579. class: Symfony\Component\HttpFoundation\Session\Session
  1580. arguments: ['@session_manager', '@session.attribute_bag', '@session.flash_bag']
  1581. tags:
  1582. - { name: service_collector, tag: session_bag, call: registerBag }
  1583. # session.flash_bag has special treatment: it is passed to the session
  1584. # service as an argument. Other services using FlashBag should be tagged
  1585. # with the session_bag tag, so that they will persist across page loads.
  1586. session.flash_bag:
  1587. class: Symfony\Component\HttpFoundation\Session\Flash\FlashBag
  1588. public: false
  1589. session.attribute_bag:
  1590. class: Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag
  1591. public: false
  1592. session_handler:
  1593. alias: session_handler.storage
  1594. session_handler.storage:
  1595. class: Drupal\Core\Session\SessionHandler
  1596. arguments: ['@request_stack', '@database']
  1597. tags:
  1598. - { name: backend_overridable }
  1599. session_handler.write_safe:
  1600. class: Drupal\Core\Session\WriteSafeSessionHandler
  1601. tags:
  1602. - { name: session_handler_proxy, priority: 150 }
  1603. session_manager:
  1604. class: Drupal\Core\Session\SessionManager
  1605. arguments: ['@request_stack', '@database', '@session_manager.metadata_bag', '@session_configuration', '@session_handler']
  1606. tags:
  1607. - { name: backend_overridable }
  1608. calls:
  1609. - [setWriteSafeHandler, ['@session_handler.write_safe']]
  1610. session_manager.metadata_bag:
  1611. class: Drupal\Core\Session\MetadataBag
  1612. arguments: ['@settings']
  1613. asset.css.collection_renderer:
  1614. class: Drupal\Core\Asset\CssCollectionRenderer
  1615. arguments: [ '@state', '@file_url_generator' ]
  1616. asset.css.collection_optimizer:
  1617. class: Drupal\Core\Asset\CssCollectionOptimizer
  1618. arguments: [ '@asset.css.collection_grouper', '@asset.css.optimizer', '@asset.css.dumper', '@state', '@file_system']
  1619. asset.css.optimizer:
  1620. class: Drupal\Core\Asset\CssOptimizer
  1621. arguments: ['@file_url_generator']
  1622. asset.css.collection_grouper:
  1623. class: Drupal\Core\Asset\CssCollectionGrouper
  1624. asset.css.dumper:
  1625. class: Drupal\Core\Asset\AssetDumper
  1626. arguments: ['@file_system']
  1627. asset.js.collection_renderer:
  1628. class: Drupal\Core\Asset\JsCollectionRenderer
  1629. arguments: [ '@state', '@file_url_generator' ]
  1630. asset.js.collection_optimizer:
  1631. class: Drupal\Core\Asset\JsCollectionOptimizer
  1632. arguments: [ '@asset.js.collection_grouper', '@asset.js.optimizer', '@asset.js.dumper', '@state', '@file_system']
  1633. asset.js.optimizer:
  1634. class: Drupal\Core\Asset\JsOptimizer
  1635. asset.js.collection_grouper:
  1636. class: Drupal\Core\Asset\JsCollectionGrouper
  1637. asset.js.dumper:
  1638. class: Drupal\Core\Asset\AssetDumper
  1639. arguments: ['@file_system']
  1640. library.discovery:
  1641. class: Drupal\Core\Asset\LibraryDiscovery
  1642. arguments: ['@library.discovery.collector']
  1643. library.discovery.collector:
  1644. class: Drupal\Core\Asset\LibraryDiscoveryCollector
  1645. arguments: ['@cache.discovery', '@lock', '@library.discovery.parser', '@theme.manager']
  1646. tags:
  1647. - { name: needs_destruction }
  1648. library.discovery.parser:
  1649. class: Drupal\Core\Asset\LibraryDiscoveryParser
  1650. arguments: ['%app.root%', '@module_handler', '@theme.manager', '@stream_wrapper_manager', '@library.libraries_directory_file_finder', '@extension.path.resolver']
  1651. library.libraries_directory_file_finder:
  1652. class: Drupal\Core\Asset\LibrariesDirectoryFileFinder
  1653. arguments: ['%app.root%', '%site.path%', '@extension.list.profile', '%install_profile%']
  1654. library.dependency_resolver:
  1655. class: Drupal\Core\Asset\LibraryDependencyResolver
  1656. arguments: ['@library.discovery']
  1657. asset.resolver:
  1658. class: Drupal\Core\Asset\AssetResolver
  1659. arguments: ['@library.discovery', '@library.dependency_resolver', '@module_handler', '@theme.manager', '@language_manager', '@cache.data']
  1660. info_parser:
  1661. class: Drupal\Core\Extension\InfoParser
  1662. arguments: ['%app.root%']
  1663. twig:
  1664. class: Drupal\Core\Template\TwigEnvironment
  1665. arguments: ['%app.root%', '@cache.default', '%twig_extension_hash%', '@state', '@twig.loader', '%twig.config%']
  1666. tags:
  1667. - { name: service_collector, tag: 'twig.extension', call: addExtension }
  1668. twig.extension:
  1669. class: Drupal\Core\Template\TwigExtension
  1670. arguments: ['@renderer', '@url_generator', '@theme.manager', '@date.formatter', '@file_url_generator']
  1671. tags:
  1672. - { name: twig.extension, priority: 100 }
  1673. twig.extension.debug:
  1674. class: Twig\Extension\DebugExtension
  1675. tags:
  1676. - { name: twig.extension, priority: 50 }
  1677. twig.extension.varDumper:
  1678. class: Drupal\Core\Template\DebugExtension
  1679. tags:
  1680. # This extension is loaded after the Twig Debug Extension because for Twig
  1681. # Extensions, last extension loaded takes precedent. This allows this
  1682. # extension to override the default Twig Debug Extension conditionally
  1683. # when Symfony VarDumper is available.
  1684. - { name: twig.extension, priority: 25 }
  1685. twig.loader:
  1686. class: Twig\Loader\ChainLoader
  1687. public: false
  1688. tags:
  1689. - { name: service_collector, tag: twig.loader, call: addLoader, required: TRUE }
  1690. twig.loader.filesystem:
  1691. class: Drupal\Core\Template\Loader\FilesystemLoader
  1692. # We use '.' instead of '%app.root%' as the path for non-namespaced template
  1693. # files so that they match the relative paths of templates loaded via the
  1694. # theme registry or via Twig namespaces.
  1695. arguments: ['.', '@module_handler', '@theme_handler', '%twig.config%']
  1696. tags:
  1697. - { name: twig.loader, priority: 100 }
  1698. twig.loader.theme_registry:
  1699. class: Drupal\Core\Template\Loader\ThemeRegistryLoader
  1700. arguments: ['@theme.registry']
  1701. tags:
  1702. - { name: twig.loader, priority: 0 }
  1703. twig.loader.string:
  1704. class: Drupal\Core\Template\Loader\StringLoader
  1705. tags:
  1706. - { name: twig.loader, priority: -100 }
  1707. element_info:
  1708. alias: plugin.manager.element_info
  1709. file.htaccess_writer:
  1710. class: Drupal\Core\File\HtaccessWriter
  1711. arguments: ['@logger.channel.security', '@stream_wrapper_manager']
  1712. file.mime_type.guesser:
  1713. class: Drupal\Core\File\MimeType\MimeTypeGuesser
  1714. arguments: ['@stream_wrapper_manager']
  1715. lazy: true
  1716. file.mime_type.guesser.extension:
  1717. class: Drupal\Core\File\MimeType\ExtensionMimeTypeGuesser
  1718. arguments: ['@module_handler']
  1719. tags:
  1720. - { name: mime_type_guesser }
  1721. lazy: true
  1722. # Currently needs to be public as it is called by
  1723. # \Drupal\Core\Render\Element\StatusMessages.
  1724. # @todo Consider making this service private again after
  1725. # https://www.drupal.org/node/2367555 lands.
  1726. render_placeholder_generator:
  1727. class: Drupal\Core\Render\PlaceholderGenerator
  1728. arguments: ['%renderer.config%']
  1729. render_cache:
  1730. class: Drupal\Core\Render\PlaceholderingRenderCache
  1731. arguments: ['@request_stack', '@cache_factory', '@cache_contexts_manager', '@render_placeholder_generator']
  1732. renderer:
  1733. class: Drupal\Core\Render\Renderer
  1734. arguments: ['@controller_resolver', '@theme.manager', '@plugin.manager.element_info', '@render_placeholder_generator', '@render_cache', '@request_stack', '%renderer.config%']
  1735. early_rendering_controller_wrapper_subscriber:
  1736. class: Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber
  1737. arguments: ['@http_kernel.controller.argument_resolver', '@renderer']
  1738. tags:
  1739. - { name: event_subscriber }
  1740. # Placeholder strategies for rendering placeholders.
  1741. html_response.placeholder_strategy_subscriber:
  1742. class: Drupal\Core\EventSubscriber\HtmlResponsePlaceholderStrategySubscriber
  1743. tags:
  1744. - { name: event_subscriber }
  1745. arguments: ['@placeholder_strategy']
  1746. placeholder_strategy:
  1747. class: Drupal\Core\Render\Placeholder\ChainedPlaceholderStrategy
  1748. tags:
  1749. - { name: service_collector, tag: placeholder_strategy, call: addPlaceholderStrategy }
  1750. placeholder_strategy.single_flush:
  1751. class: Drupal\Core\Render\Placeholder\SingleFlushStrategy
  1752. tags:
  1753. - { name: placeholder_strategy, priority: -1000 }
  1754. email.validator:
  1755. class: Drupal\Component\Utility\EmailValidator
  1756. update.update_hook_registry:
  1757. class: Drupal\Core\Update\UpdateHookRegistry
  1758. factory: ['@update.update_hook_registry_factory', create]
  1759. update.update_hook_registry_factory:
  1760. class: Drupal\Core\Update\UpdateHookRegistryFactory
  1761. parent: container.trait
  1762. update.post_update_registry:
  1763. class: Drupal\Core\Update\UpdateRegistry
  1764. factory: ['@update.post_update_registry_factory', create]
  1765. tags:
  1766. - { name: event_subscriber }
  1767. update.post_update_registry_factory:
  1768. class: Drupal\Core\Update\UpdateRegistryFactory
  1769. parent: container.trait
  1770. uuid:
  1771. class: Drupal\Component\Uuid\Php
  1772. response_filter.active_link:
  1773. class: Drupal\Core\EventSubscriber\ActiveLinkResponseFilter
  1774. arguments: ['@current_user', '@path.current', '@path.matcher', '@language_manager']
  1775. tags:
  1776. - { name: event_subscriber }
  1777. response_filter.rss.relative_url:
  1778. class: Drupal\Core\EventSubscriber\RssResponseRelativeUrlFilter
  1779. tags:
  1780. - { name: event_subscriber }
  1781. messenger:
  1782. class: Drupal\Core\Messenger\Messenger
  1783. arguments: ['@session.flash_bag', '@page_cache_kill_switch']
  1784. tempstore.private:
  1785. class: Drupal\Core\TempStore\PrivateTempStoreFactory
  1786. arguments: ['@keyvalue.expirable', '@lock', '@current_user', '@request_stack', '%tempstore.expire%']
  1787. tags:
  1788. - { name: backend_overridable }
  1789. tempstore.shared:
  1790. class: Drupal\Core\TempStore\SharedTempStoreFactory
  1791. arguments: ['@keyvalue.expirable', '@lock', '@request_stack', '@current_user', '%tempstore.expire%']
  1792. tags:
  1793. - { name: backend_overridable }
  1794. pager.manager:
  1795. class: Drupal\Core\Pager\PagerManager
  1796. arguments: ['@pager.parameters']
  1797. pager.parameters:
  1798. class: Drupal\Core\Pager\PagerParameters
  1799. arguments: ['@request_stack']

Services

Title Deprecated Summary
config_exclude_modules_subscriber Drupal\Core\EventSubscriber\ExcludedModulesEventSubscriber
config_import_subscriber Drupal\Core\EventSubscriber\ConfigImportSubscriber
config_snapshot_subscriber Drupal\Core\EventSubscriber\ConfigSnapshotSubscriber
container.namespaces ArrayObject
container.trait Abstract
content_type_header_matcher Drupal\Core\Routing\ContentTypeHeaderMatcher
content_uninstall_validator Drupal\Core\Entity\ContentUninstallValidator
context.handler Drupal\Core\Plugin\Context\ContextHandler
context.repository Drupal\Core\Plugin\Context\LazyContextRepository
controller.entity_form Drupal\Core\Entity\HtmlEntityFormController
controller.form Drupal\Core\Controller\HtmlFormController
controller_resolver Drupal\Core\Controller\ControllerResolver
country_manager Drupal\Core\Locale\CountryManager
cron Drupal\Core\Cron
csrf_token Drupal\Core\Access\CsrfTokenGenerator
current_route_match Drupal\Core\Routing\CurrentRouteMatch
current_user Drupal\Core\Session\AccountProxy
database Drupal\Core\Database\Connection
database.replica Drupal\Core\Database\Connection
database.replica_kill_switch Drupal\Core\Database\ReplicaKillSwitch
database_driver_uninstall_validator Drupal\Core\Extension\DatabaseDriverUninstallValidator
date.formatter Drupal\Core\Datetime\DateFormatter
datetime.time Drupal\Component\Datetime\Time
default_plugin_manager Abstract
diff.formatter Drupal\Core\Diff\DiffFormatter
Drupal\Component\DependencyInjection\ReverseContainer
early_rendering_controller_wrapper_subscriber Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber
element_info Alias of plugin.manager.element_info
email.validator Drupal\Component\Utility\EmailValidator
entity.autocomplete_matcher Drupal\Core\Entity\EntityAutocompleteMatcher
entity.bundle_config_import_validator Drupal\Core\Entity\Event\BundleConfigImportValidate
entity.definition_update_manager Drupal\Core\Entity\EntityDefinitionUpdateManager
entity.form_builder Drupal\Core\Entity\EntityFormBuilder
entity.last_installed_schema.repository Drupal\Core\Entity\EntityLastInstalledSchemaRepository
entity.memory_cache Drupal\Core\Cache\MemoryCache\MemoryCache
entity.query.config Drupal\Core\Config\Entity\Query\QueryFactory
entity.query.keyvalue Drupal\Core\Entity\KeyValueStore\Query\QueryFactory
entity.query.null Drupal\Core\Entity\Query\Null\QueryFactory
entity.query.sql Drupal\Core\Entity\Query\Sql\QueryFactory
entity.repository Drupal\Core\Entity\EntityRepository
entity_bundle.listener Drupal\Core\Entity\EntityBundleListener
entity_display.repository Drupal\Core\Entity\EntityDisplayRepository
entity_field.deleted_fields_repository Drupal\Core\Field\DeletedFieldsRepository
entity_field.manager Drupal\Core\Entity\EntityFieldManager
entity_route_subscriber Drupal\Core\EventSubscriber\EntityRouteProviderSubscriber
entity_type.bundle.info Drupal\Core\Entity\EntityTypeBundleInfo
entity_type.listener Drupal\Core\Entity\EntityTypeListener
entity_type.manager Drupal\Core\Entity\EntityTypeManager
entity_type.repository Drupal\Core\Entity\EntityTypeRepository
event_dispatcher Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.