core.services.yml 40.3 KB
Newer Older
1
2
3
4
5
6
parameters:
  twig.config: {}
  factory.keyvalue:
    default: keyvalue.database
  factory.keyvalue.expirable:
    default: keyvalue.expirable.database
7
8
9
services:
  cache_factory:
    class: Drupal\Core\Cache\CacheFactory
10
    arguments: ['@settings', '%cache_default_bin_backends%']
11
12
    calls:
      - [setContainer, ['@service_container']]
13
14
15
16
17
  cache_contexts:
    class: Drupal\Core\Cache\CacheContexts
    arguments: ['@service_container', '%cache_contexts%' ]
  cache_context.url:
    class: Drupal\Core\Cache\UrlCacheContext
18
    arguments: ['@request_stack']
19
20
21
22
23
24
25
26
27
    tags:
      - { name: cache.context}
  cache_context.language:
    class: Drupal\Core\Cache\LanguageCacheContext
    arguments: ['@language_manager']
    tags:
      - { name: cache.context}
  cache_context.theme:
    class: Drupal\Core\Cache\ThemeCacheContext
28
    arguments: ['@current_route_match', '@theme.negotiator']
29
30
    tags:
      - { name: cache.context}
31
32
33
34
  cache_context.timezone:
    class: Drupal\Core\Cache\TimeZoneCacheContext
    tags:
      - { name: cache.context}
35
36
37
38
39
  cache.backend.chainedfast:
    class: Drupal\Core\Cache\ChainedFastBackendFactory
    arguments: ['@settings']
    calls:
      - [setContainer, ['@service_container']]
40
41
42
  cache.backend.database:
    class: Drupal\Core\Cache\DatabaseBackendFactory
    arguments: ['@database']
43
44
  cache.backend.apcu:
    class: Drupal\Core\Cache\ApcuBackendFactory
45
46
  cache.backend.php:
    class: Drupal\Core\Cache\PhpBackendFactory
47
48
49
  cache.bootstrap:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
50
      - { name: cache.bin, default_backend: cache.backend.chainedfast }
51
52
53
    factory_method: get
    factory_service: cache_factory
    arguments: [bootstrap]
54
55
56
  cache.config:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
57
      - { name: cache.bin, default_backend: cache.backend.chainedfast }
58
59
60
    factory_method: get
    factory_service: cache_factory
    arguments: [config]
61
  cache.default:
62
63
64
65
66
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
    factory_method: get
    factory_service: cache_factory
67
    arguments: [default]
68
69
70
71
72
73
74
  cache.entity:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
    factory_method: get
    factory_service: cache_factory
    arguments: [entity]
75
76
77
78
79
80
81
  cache.menu:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
    factory_method: get
    factory_service: cache_factory
    arguments: [menu]
82
  cache.render:
83
84
85
86
87
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
    factory_method: get
    factory_service: cache_factory
88
89
    arguments: [render]
  cache.data:
90
91
92
93
94
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
    factory_method: get
    factory_service: cache_factory
95
    arguments: [data]
96
97
98
  cache.discovery:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
99
      - { name: cache.bin, default_backend: cache.backend.chainedfast }
100
101
102
    factory_method: get
    factory_service: cache_factory
    arguments: [discovery]
103
104
105
106
107
108
109
110
111
112
113
114
  page_cache_request_policy:
    class: Drupal\Core\PageCache\DefaultRequestPolicy
    tags:
      - { name: service_collector, tag: page_cache_request_policy, call: addPolicy}
  page_cache_response_policy:
    class: Drupal\Core\PageCache\ChainResponsePolicy
    tags:
      - { name: service_collector, tag: page_cache_response_policy, call: addPolicy}
  page_cache_kill_switch:
    class: Drupal\Core\PageCache\ResponsePolicy\KillSwitch
    tags:
      - { name: page_cache_response_policy }
115
116
  config.manager:
    class: Drupal\Core\Config\ConfigManager
117
    arguments: ['@entity.manager', '@config.factory', '@config.typed', '@string_translation', '@config.storage', '@event_dispatcher']
118
119
120
  config.factory:
    class: Drupal\Core\Config\ConfigFactory
    tags:
121
      - { name: event_subscriber }
122
      - { name: service_collector, tag: 'config.factory.override', call: addOverride }
123
    arguments: ['@config.storage', '@event_dispatcher', '@config.typed']
124
125
  config.installer:
    class: Drupal\Core\Config\ConfigInstaller
126
    arguments: ['@config.factory', '@config.storage', '@config.typed', '@config.manager', '@event_dispatcher']
127
  config.storage:
128
129
    class: Drupal\Core\Config\CachedStorage
    arguments: ['@config.storage.active', '@cache.config']
130
131
132
  config.storage.active:
    class: Drupal\Core\Config\DatabaseStorage
    arguments: ['@database', 'config']
133
    public: false
134
135
    tags:
      - { name: backend_overridable }
136
137
138
139
  config.storage.file:
    class: Drupal\Core\Config\FileStorage
    factory_class: Drupal\Core\Config\FileStorageFactory
    factory_method: getActive
140
    public: false
141
142
143
144
145
146
147
  config.storage.staging:
    class: Drupal\Core\Config\FileStorage
    factory_class: Drupal\Core\Config\FileStorageFactory
    factory_method: getStaging
  config.storage.snapshot:
    class: Drupal\Core\Config\DatabaseStorage
    arguments: ['@database', config_snapshot]
148
149
    tags:
      - { name: backend_overridable }
150
  config.storage.schema:
151
152
    class: Drupal\Core\Config\ExtensionInstallStorage
    arguments: ['@config.storage', 'config/schema']
153
154
  config.storage.installer:
    class: Drupal\Core\Config\InstallStorage
155
156
  config.typed:
    class: Drupal\Core\Config\TypedConfigManager
157
158
159
    arguments: ['@config.storage', '@config.storage.schema', '@cache.discovery', '@module_handler']
    tags:
      - { name: plugin_manager_cache_clear }
160
161
162
  context.handler:
    class: Drupal\Core\Plugin\Context\ContextHandler
    arguments: ['@typed_data_manager']
163
164
  cron:
    class: Drupal\Core\Cron
165
    arguments: ['@module_handler', '@lock', '@queue', '@state', '@current_user', '@session_manager', '@logger.channel.cron', '@plugin.manager.queue_worker']
166
167
168
  diff.formatter:
    class: Drupal\Core\Diff\DiffFormatter
    arguments: ['@config.factory']
169
170
171
172
173
  database:
    class: Drupal\Core\Database\Connection
    factory_class: Drupal\Core\Database\Database
    factory_method: getConnection
    arguments: [default]
174
175
  form_builder:
    class: Drupal\Core\Form\FormBuilder
176
    arguments: ['@form_validator', '@form_submitter', '@form_cache', '@module_handler', '@event_dispatcher', '@request_stack', '@class_resolver', '@theme.manager', '@?csrf_token', '@?http_kernel']
177
178
  form_validator:
    class: Drupal\Core\Form\FormValidator
179
    arguments: ['@request_stack', '@string_translation', '@csrf_token', '@logger.channel.form']
180
181
182
  form_submitter:
    class: Drupal\Core\Form\FormSubmitter
    arguments: ['@request_stack', '@url_generator']
183
184
185
186
  form_cache:
    class: Drupal\Core\Form\FormCache
    arguments: ['@keyvalue.expirable', '@module_handler', '@current_user', '@csrf_token']
    public: false  # Private to form_builder
187
188
  keyvalue:
    class: Drupal\Core\KeyValueStore\KeyValueFactory
189
    arguments: ['@service_container', '%factory.keyvalue%']
190
191
  keyvalue.database:
    class: Drupal\Core\KeyValueStore\KeyValueDatabaseFactory
192
    arguments: ['@serialization.phpserialize', '@database']
193
194
  keyvalue.expirable:
    class: Drupal\Core\KeyValueStore\KeyValueExpirableFactory
195
    arguments: ['@service_container', '%factory.keyvalue.expirable%']
196
197
  keyvalue.expirable.database:
    class: Drupal\Core\KeyValueStore\KeyValueDatabaseExpirableFactory
198
    arguments: ['@serialization.phpserialize', '@database']
199
200
    tags:
      - { name: needs_destruction }
201
202
203
204
205
  logger.factory:
    class: Drupal\Core\Logger\LoggerChannelFactory
    parent: container.trait
    tags:
      - { name: service_collector, tag: logger, call: addLogger }
206
207
  logger.channel_base:
    abstract: true
208
209
210
    class: Drupal\Core\Logger\LoggerChannel
    factory_method: get
    factory_service: logger.factory
211
212
  logger.channel.default:
    parent: logger.channel_base
213
    arguments: ['system']
214
  logger.channel.php:
215
    parent: logger.channel_base
216
    arguments: ['php']
217
  logger.channel.image:
218
    parent: logger.channel_base
219
    arguments: ['image']
220
  logger.channel.cron:
221
    parent: logger.channel_base
222
223
    arguments: ['cron']
  logger.channel.form:
224
    parent: logger.channel_base
225
    arguments: ['form']
226
227
  logger.log_message_parser:
    class: Drupal\Core\Logger\LogMessageParser
228
229
230
231
232
233
234
235

  serialization.json:
    class: Drupal\Component\Serialization\Json
  serialization.phpserialize:
    class: Drupal\Component\Serialization\PhpSerialize
  serialization.yaml:
    class: Drupal\Component\Serialization\Yaml

236
  settings:
237
238
    class: Drupal\Core\Site\Settings
    factory_class: Drupal\Core\Site\Settings
239
    factory_method: getInstance
240
  state:
241
    class: Drupal\Core\State\State
242
    arguments: ['@keyvalue']
243
244
245
246
247
248
249
250
251
252
253
254
  queue:
    class: Drupal\Core\Queue\QueueFactory
    arguments: ['@settings']
    calls:
      - [setContainer, ['@service_container']]
  queue.database:
    class: Drupal\Core\Queue\QueueDatabaseFactory
    arguments: ['@database']
  path.alias_whitelist:
    class: Drupal\Core\Path\AliasWhitelist
    tags:
      - { name: needs_destruction }
255
    arguments: [path_alias_whitelist, '@cache.default', '@lock', '@state', '@path.alias_storage']
256
257
  path.alias_manager:
    class: Drupal\Core\Path\AliasManager
258
    arguments: ['@path.alias_storage', '@path.alias_whitelist', '@language_manager', '@cache.data']
259
  http_client:
260
    class: Drupal\Core\Http\Client
261
262
    tags:
      - { name: service_collector, tag: http_client_subscriber, call: attach }
263
264
  theme.negotiator:
    class: Drupal\Core\Theme\ThemeNegotiator
265
    arguments: ['@access_check.theme']
266
267
    tags:
      - { name: service_collector, tag: theme_negotiator, call: addNegotiator }
268
269
270
271
272
273
274
  theme.negotiator.default:
    class: Drupal\Core\Theme\DefaultNegotiator
    arguments: ['@config.factory']
    tags:
      - { name: theme_negotiator, priority: -100 }
  theme.negotiator.ajax_base_page:
    class: Drupal\Core\Theme\AjaxBasePageNegotiator
275
    arguments: ['@csrf_token', '@config.factory', '@request_stack']
276
277
    tags:
      - { name: theme_negotiator, priority: 1000 }
278
279
280
  container.namespaces:
    class: ArrayObject
    arguments: [ '%container.namespaces%' ]
281
282
283
284
  container.trait:
    abstract: true
    calls:
      - [setContainer, ['@service_container']]
285
286
  default_plugin_manager:
    abstract: true
287
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
288
  module_handler:
289
290
    class: Drupal\Core\Extension\ModuleHandler
    arguments: ['%container.modules%', '@cache.bootstrap']
291
292
  theme_handler:
    class: Drupal\Core\Extension\ThemeHandler
293
    arguments: ['@config.factory', '@module_handler', '@state', '@info_parser', '@logger.channel.default', '@asset.css.collection_optimizer', '@config.installer', '@config.manager', '@router.builder']
294
  entity.manager:
295
    class: Drupal\Core\Entity\EntityManager
296
    arguments: ['@container.namespaces', '@module_handler', '@cache.discovery', '@language_manager', '@string_translation', '@class_resolver', '@typed_data_manager', '@entity.definitions.installed']
297
    parent: container.trait
298
299
    tags:
      - { name: plugin_manager_cache_clear }
300
301
302
303
304
305
306
307
  entity.definitions.installed:
    class: Drupal\Core\KeyValueStore\KeyValueStoreInterface
    factory_method: get
    factory_service: keyvalue
    arguments: ['entity.definitions.installed']
  entity.definition_update_manager:
    class: Drupal\Core\Entity\EntityDefinitionUpdateManager
    arguments: ['@entity.manager']
308
309
310
  entity.form_builder:
    class: Drupal\Core\Entity\EntityFormBuilder
    arguments: ['@entity.manager', '@form_builder']
311
312
313
  plugin.manager.block:
    class: Drupal\Core\Block\BlockManager
    parent: default_plugin_manager
314
315
  plugin.manager.field.field_type:
    class: Drupal\Core\Field\FieldTypePluginManager
316
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
317
318
  plugin.manager.field.widget:
    class: Drupal\Core\Field\WidgetPluginManager
319
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@plugin.manager.field.field_type']
320
321
  plugin.manager.field.formatter:
    class: Drupal\Core\Field\FormatterPluginManager
322
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@plugin.manager.field.field_type']
323
324
  plugin.manager.archiver:
    class: Drupal\Core\Archiver\ArchiverManager
325
    parent: default_plugin_manager
326
327
  plugin.manager.action:
    class: Drupal\Core\Action\ActionManager
328
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
329
330
331
  plugin.manager.menu.link:
    class: Drupal\Core\Menu\MenuLinkManager
    arguments: ['@menu.tree_storage', '@menu_link.static.overrides', '@module_handler']
332
333
  menu.link_tree:
    class: Drupal\Core\Menu\MenuLinkTree
334
    arguments: ['@menu.tree_storage', '@plugin.manager.menu.link', '@router.route_provider', '@menu.active_trail', '@controller_resolver', '@cache.menu', '@current_route_match']
335
336
  menu.default_tree_manipulators:
    class: Drupal\Core\Menu\DefaultMenuLinkTreeManipulators
337
    arguments: ['@access_manager', '@current_user', '@entity.query']
338
339
340
341
342
343
  menu.active_trail:
    class: Drupal\Core\Menu\MenuActiveTrail
    arguments: ['@plugin.manager.menu.link', '@current_route_match']
  menu.parent_form_selector:
    class: Drupal\Core\Menu\MenuParentFormSelector
    arguments: ['@menu.link_tree', '@entity.manager', '@string_translation']
344
345
  plugin.manager.menu.local_action:
    class: Drupal\Core\Menu\LocalActionManager
346
    arguments: ['@controller_resolver', '@request_stack', '@router.route_provider', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user']
347
348
  plugin.manager.menu.local_task:
    class: Drupal\Core\Menu\LocalTaskManager
349
    arguments: ['@controller_resolver', '@request_stack', '@router.route_provider', '@router.builder', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user']
350
351
  plugin.manager.menu.contextual_link:
    class: Drupal\Core\Menu\ContextualLinkManager
352
    arguments: ['@controller_resolver', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user', '@request_stack']
353
354
355
  plugin.manager.display_variant:
    class: Drupal\Core\Display\VariantManager
    parent: default_plugin_manager
356
357
358
  plugin.manager.queue_worker:
    class: Drupal\Core\Queue\QueueWorkerManager
    parent: default_plugin_manager
359
360
  plugin.cache_clearer:
    class: Drupal\Core\Plugin\CachedDiscoveryClearer
361
362
363
364
365
  paramconverter.menu_link:
    class: Drupal\Core\ParamConverter\MenuLinkPluginConverter
    tags:
      - { name: paramconverter }
    arguments: ['@plugin.manager.menu.link']
366
367
368
369
  menu.tree_storage:
    class: Drupal\Core\Menu\MenuTreeStorage
    arguments: ['@database', '@cache.menu', 'menu_tree']
    public: false  # Private to plugin.manager.menu.link and menu.link_tree
370
371
    tags:
      - { name: backend_overridable }
372
373
374
  menu_link.static.overrides:
    class: Drupal\Core\Menu\StaticMenuLinkOverrides
    arguments: ['@config.factory']
375
376
  request_stack:
    class: Symfony\Component\HttpFoundation\RequestStack
377
378
    tags:
      - { name: persist }
379
380
381
  current_route_match:
     class: Drupal\Core\Routing\CurrentRouteMatch
     arguments: ['@request_stack']
382
383
384
385
  event_dispatcher:
    class: Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher
    arguments: ['@service_container']
  controller_resolver:
386
    class: Drupal\Core\Controller\ControllerResolver
387
388
389
390
391
    arguments: ['@class_resolver', '@logger.channel.default']
  class_resolver:
    class: Drupal\Core\DependencyInjection\ClassResolver
    calls:
      - [setContainer, ['@service_container']]
392
393
394
  title_resolver:
    class: Drupal\Core\Controller\TitleResolver
    arguments: ['@controller_resolver', '@string_translation']
395
  http_kernel:
396
397
398
399
400
401
402
    class: Symfony\Component\HttpKernel\HttpKernel
    factory_method: resolve
    factory_service: http_kernel_factory
    arguments: ['@http_kernel.basic']
  http_kernel_factory:
    class: Stack\Builder
  http_kernel.basic:
403
    class: Symfony\Component\HttpKernel\HttpKernel
404
    arguments: ['@event_dispatcher', '@controller_resolver', '@request_stack']
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
  http_middleware.reverse_proxy:
    class: Drupal\Core\StackMiddleware\ReverseProxyMiddleware
    arguments: ['@settings']
    tags:
      - { name: http_middleware, priority: 300 }
  http_middleware.page_cache:
    class: Drupal\Core\StackMiddleware\PageCache
    arguments: ['@kernel']
    tags:
      - { name: http_middleware, priority: 200 }
  http_middleware.kernel_pre_handle:
    class: Drupal\Core\StackMiddleware\KernelPreHandle
    arguments: ['@kernel']
    tags:
      - { name: http_middleware, priority: 100 }
420
421
  language_manager:
    class: Drupal\Core\Language\LanguageManager
422
423
424
425
    arguments: ['@language.default']
  language.default:
    class: Drupal\Core\Language\LanguageDefault
    arguments: ['%language.default_values%']
426
427
  string_translator.custom_strings:
    class: Drupal\Core\StringTranslation\Translator\CustomStrings
428
    arguments: ['@settings']
429
430
431
432
    tags:
      - { name: string_translator, priority: 30 }
  string_translation:
    class: Drupal\Core\StringTranslation\TranslationManager
433
434
435
    arguments: ['@language_manager']
    calls:
      - [initLanguageManager]
436
437
    tags:
      - { name: service_collector, tag: string_translator, call: addTranslator }
438
  database.replica:
439
440
441
    class: Drupal\Core\Database\Connection
    factory_class: Drupal\Core\Database\Database
    factory_method: getConnection
442
    arguments: [replica]
443
  typed_data_manager:
444
    class: Drupal\Core\TypedData\TypedDataManager
445
    parent: default_plugin_manager
446
447
    calls:
      - [setValidationConstraintManager, ['@validation.constraint']]
448
449
    tags:
      - { name: plugin_manager_cache_clear }
450
451
  validation.constraint:
    class: Drupal\Core\Validation\ConstraintManager
452
    parent: default_plugin_manager
453
454
  lock:
    class: Drupal\Core\Lock\DatabaseLockBackend
455
    arguments: ['@database']
456
457
    tags:
      - { name: backend_overridable }
458
459
  router.request_context:
    class: Symfony\Component\Routing\RequestContext
460
461
    tags:
      - { name: persist }
462
463
  router.admin_context:
    class: Drupal\Core\Routing\AdminContext
464
    arguments: ['@request_stack']
465
466
  router.route_provider:
    class: Drupal\Core\Routing\RouteProvider
467
    arguments: ['@database', '@router.builder', '@state']
468
469
    tags:
      - { name: event_subscriber }
470
      - { name: backend_overridable }
471
472
473
474
475
  router.route_preloader:
    class: Drupal\Core\Routing\RoutePreloader
    arguments: ['@router.route_provider', '@state', '@content_negotiation']
    tags:
      - { name: 'event_subscriber' }
476
477
478
479
480
481
482
  router.matcher.final_matcher:
    class: Drupal\Core\Routing\UrlMatcher
  router.matcher:
    class: Symfony\Cmf\Component\Routing\NestedMatcher\NestedMatcher
    arguments: ['@router.route_provider']
    calls:
      - [setFinalMatcher, ['@router.matcher.final_matcher']]
483
484
    tags:
      - { name: service_collector, tag: route_filter, call: addRouteFilter }
485
  url_generator:
486
    class: Drupal\Core\Routing\UrlGenerator
487
    arguments: ['@router.route_provider', '@path_processor_manager', '@route_processor_manager', '@config.factory', '@settings', '@logger.channel.default', '@request_stack']
488
    calls:
489
      - [setContext, ['@?router.request_context']]
490
491
  link_generator:
    class: Drupal\Core\Utility\LinkGenerator
492
    arguments: ['@url_generator', '@module_handler']
493
494
495
  router:
    class: Drupal\Core\Routing\AccessAwareRouter
    arguments: ['@router.no_access_checks', '@access_manager', '@current_user']
496
497
  router.dynamic:
    class: Symfony\Cmf\Component\Routing\DynamicRouter
498
    arguments: ['@router.request_context', '@router.matcher', '@url_generator']
499
500
    tags:
      - { name: service_collector, tag: route_enhancer, call: addRouteEnhancer }
501
  router.no_access_checks:
502
503
504
505
    class: Symfony\Cmf\Component\Routing\ChainRouter
    calls:
      - [setContext, ['@router.request_context']]
      - [add, ['@router.dynamic']]
506
507
508
509
510
  router.path_roots_subscriber:
    class: Drupal\Core\EventSubscriber\PathRootsSubscriber
    arguments: ['@state']
    tags:
      - { name: event_subscriber }
511
512
  entity.query:
    class: Drupal\Core\Entity\Query\QueryFactory
513
    arguments: ['@entity.manager']
514
515
516
517
    calls:
      - [setContainer, ['@service_container']]
  entity.query.config:
    class: Drupal\Core\Config\Entity\Query\QueryFactory
518
    arguments: ['@config.storage', '@config.factory']
519
520
521
  entity.query.sql:
    class: Drupal\Core\Entity\Query\Sql\QueryFactory
    arguments: ['@database']
522
523
    tags:
      - { name: backend_overridable }
524
525
526
  entity.query.keyvalue:
    class: Drupal\Core\Entity\KeyValueStore\Query\QueryFactory
    arguments: ['@keyvalue']
527
528
  router.dumper:
    class: Drupal\Core\Routing\MatcherDumper
529
    arguments: ['@database', '@state']
530
531
    tags:
      - { name: backend_overridable }
532
533
  router.builder:
    class: Drupal\Core\Routing\RouteBuilder
534
535
536
    arguments: ['@router.dumper', '@lock', '@event_dispatcher', '@module_handler', '@controller_resolver', '@state']
  router.rebuild_subscriber:
    class: Drupal\Core\EventSubscriber\RouterRebuildSubscriber
537
538
539
540
541
542
    arguments: ['@router.builder']
    tags:
      - { name: event_subscriber }
  menu.rebuild_subscriber:
    class: Drupal\Core\EventSubscriber\MenuRouterRebuildSubscriber
    arguments: ['@lock', '@plugin.manager.menu.link']
543
544
    tags:
      - { name: event_subscriber }
545
546
  path.alias_storage:
    class: Drupal\Core\Path\AliasStorage
547
    arguments: ['@database', '@module_handler']
548
549
    tags:
      - { name: backend_overridable }
550
551
552
  path.matcher:
    class: Drupal\Core\Path\PathMatcher
    arguments: ['@config.factory']
553
554
  path.validator:
    class: Drupal\Core\Path\PathValidator
555
    arguments: ['@router', '@router.no_access_checks', '@current_user', '@path_processor_manager']
556

557
558
559
560
561
562
563
564
565
# The argument to the hashing service defined in services.yml, to the
# constructor of PhpassHashedPassword is the log2 number of iterations for
# password stretching.
# @todo increase by 1 every Drupal version in order to counteract increases in
# the speed and power of computers available to crack the hashes. The current
# password hashing method was introduced in Drupal 7 with a log2 count of 15.
  password:
    class: Drupal\Core\Password\PhpassHashedPassword
    arguments: [16]
566
567
568
569
570
571
572
  accept_header_matcher:
    class: Drupal\Core\Routing\AcceptHeaderMatcher
    arguments: ['@content_negotiation']
    tags:
      - { name: route_filter }
  content_type_header_matcher:
    class: Drupal\Core\Routing\ContentTypeHeaderMatcher
573
574
575
576
    tags:
      - { name: route_filter }
  paramconverter_manager:
    class: Drupal\Core\ParamConverter\ParamConverterManager
577
578
    tags:
      - { name: service_collector, tag: paramconverter, call: addConverter }
579
580
581
582
583
  paramconverter_subscriber:
    class: Drupal\Core\EventSubscriber\ParamConverterSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@paramconverter_manager']
584
585
586
587
  paramconverter.entity:
    class: Drupal\Core\ParamConverter\EntityConverter
    tags:
      - { name: paramconverter }
588
    arguments: ['@entity.manager']
589
590
591
592
593
594
  paramconverter.configentity_admin:
    class: Drupal\Core\ParamConverter\AdminPathConfigEntityConverter
    tags:
      # Use a higher priority than EntityConverter, see the class for details.
      - { name: paramconverter, priority: 5 }
    arguments: ['@entity.manager', '@config.factory', '@router.admin_context']
595
596
597
598
599
  route_subscriber.module:
    class: Drupal\Core\EventSubscriber\ModuleRouteSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@module_handler']
600
601
602
  resolver_manager.entity:
    class: Drupal\Core\Entity\EntityResolverManager
    arguments: ['@entity.manager', '@controller_resolver', '@class_resolver']
603
604
605
606
  route_subscriber.entity:
    class: Drupal\Core\EventSubscriber\EntityRouteAlterSubscriber
    tags:
      - { name: event_subscriber }
607
    arguments: ['@resolver_manager.entity']
608
609
  ajax_subscriber:
    class: Drupal\Core\EventSubscriber\AjaxSubscriber
610
611
    tags:
      - { name: event_subscriber }
612
613
614
615
616
617
  route_enhancer.param_conversion:
    class: Drupal\Core\Routing\Enhancer\ParamConversionEnhancer
    arguments: ['@paramconverter_manager']
    tags:
      - { name: route_enhancer }
      - { name: event_subscriber }
618
619
620
621
  route_enhancer.authentication:
    class: Drupal\Core\Routing\Enhancer\AuthenticationEnhancer
    tags:
      - { name: route_enhancer, priority: 1000 }
622
    arguments: ['@authentication', '@current_user']
623
624
  route_enhancer.entity:
    class: Drupal\Core\Entity\Enhancer\EntityRouteEnhancer
625
    arguments: ['@controller_resolver', '@entity.manager', '@form_builder']
626
    tags:
627
      - { name: route_enhancer, priority: 20 }
628
629
630
631
632
633
634
  route_content_controller_subscriber:
    class: Drupal\Core\EventSubscriber\ContentControllerSubscriber
    arguments: ['@content_negotiation']
    tags:
      - { name: event_subscriber }
  route_content_form_controller_subscriber:
    class: Drupal\Core\EventSubscriber\ContentFormControllerSubscriber
635
    arguments: ['@class_resolver', '@controller_resolver', '@form_builder']
636
    parent: container.trait
637
    tags:
638
      - { name: event_subscriber }
639
640
641
642
  route_special_attributes_subscriber:
    class: Drupal\Core\EventSubscriber\SpecialAttributesRouteSubscriber
    tags:
      - { name: event_subscriber }
643
644
645
646
  route_http_method_subscriber:
    class: Drupal\Core\EventSubscriber\RouteMethodSubscriber
    tags:
      - { name: event_subscriber }
647
648
  controller.page:
    class: Drupal\Core\Controller\HtmlPageController
649
    arguments: ['@controller_resolver', '@title_resolver', '@render_html_renderer']
650
651
  controller.ajax:
    class: Drupal\Core\Controller\AjaxController
652
    arguments: ['@controller_resolver', '@ajax_response_renderer']
653
654
  controller.dialog:
    class: Drupal\Core\Controller\DialogController
655
    arguments: ['@controller_resolver', '@title_resolver']
656
657
  ajax_response_renderer:
    class: Drupal\Core\Ajax\AjaxResponseRenderer
658
659
660
661
  router_listener:
    class: Symfony\Component\HttpKernel\EventListener\RouterListener
    tags:
      - { name: event_subscriber }
662
    arguments: ['@router', '@router.request_context', NULL, '@request_stack']
663
664
665
666
667
668
  content_negotiation:
    class: Drupal\Core\ContentNegotiation
  view_subscriber:
    class: Drupal\Core\EventSubscriber\ViewSubscriber
    tags:
      - { name: event_subscriber }
669
    arguments: ['@content_negotiation', '@title_resolver', '@ajax_response_renderer']
670
671
672
673
  html_view_subscriber:
    class: Drupal\Core\EventSubscriber\HtmlViewSubscriber
    tags:
      - { name: event_subscriber }
674
    arguments: ['@html_fragment_renderer', '@html_page_renderer']
675
676
677
  render_html_renderer:
    class: Drupal\Core\Page\RenderHtmlRenderer
    arguments: ['@url_generator']
678
679
680
  html_fragment_renderer:
    class: Drupal\Core\Page\DefaultHtmlFragmentRenderer
    arguments: ['@language_manager']
681
682
  html_page_renderer:
    class: Drupal\Core\Page\DefaultHtmlPageRenderer
683
684
685
686
687
  private_key:
    class: Drupal\Core\PrivateKey
    arguments: ['@state']
  csrf_token:
    class: Drupal\Core\Access\CsrfTokenGenerator
688
    arguments: ['@private_key', '@session_manager.metadata_bag']
689
690
  access_arguments_resolver_factory:
    class: Drupal\Core\Access\AccessArgumentsResolverFactory
691
692
  access_manager:
    class: Drupal\Core\Access\AccessManager
693
    arguments: ['@router.route_provider', '@paramconverter_manager', '@access_arguments_resolver_factory', '@current_user']
694
695
    calls:
      - [setContainer, ['@service_container']]
696
697
  access_route_subscriber:
    class: Drupal\Core\EventSubscriber\AccessRouteSubscriber
698
699
700
701
702
703
    tags:
      - { name: event_subscriber }
    arguments: ['@access_manager']
  access_check.default:
    class: Drupal\Core\Access\DefaultAccessCheck
    tags:
704
      - { name: access_check, applies_to: _access }
705
706
707
  access_check.entity:
    class: Drupal\Core\Entity\EntityAccessCheck
    tags:
708
      - { name: access_check, applies_to: _entity_access }
709
710
  access_check.entity_create:
    class: Drupal\Core\Entity\EntityCreateAccessCheck
711
    arguments: ['@entity.manager']
712
    tags:
713
      - { name: access_check, applies_to: _entity_create_access }
714
715
716
  access_check.theme:
    class: Drupal\Core\Theme\ThemeAccessCheck
    tags:
717
      - { name: access_check, applies_to: _access_theme }
718
719
  access_check.custom:
    class: Drupal\Core\Access\CustomAccessCheck
720
    arguments: ['@controller_resolver', '@access_arguments_resolver_factory']
721
    tags:
722
      - { name: access_check, applies_to: _custom_access }
723
724
725
  access_check.csrf:
    class: Drupal\Core\Access\CsrfAccessCheck
    tags:
726
      - { name: access_check, applies_to: _csrf_token, needs_incoming_request: TRUE }
727
    arguments: ['@csrf_token']
728
729
730
  maintenance_mode:
    class: Drupal\Core\Site\MaintenanceMode
    arguments: ['@state', '@current_user']
731
732
  maintenance_mode_subscriber:
    class: Drupal\Core\EventSubscriber\MaintenanceModeSubscriber
733
    arguments: ['@maintenance_mode', '@config.factory', '@string_translation', '@url_generator', '@current_user']
734
735
736
737
738
739
    tags:
      - { name: event_subscriber }
  path_subscriber:
    class: Drupal\Core\EventSubscriber\PathSubscriber
    tags:
      - { name: event_subscriber }
740
    arguments: ['@path.alias_manager', '@path_processor_manager']
741
742
743
744
  finish_response_subscriber:
    class: Drupal\Core\EventSubscriber\FinishResponseSubscriber
    tags:
      - { name: event_subscriber }
745
    arguments: ['@language_manager', '@config.factory', '@page_cache_request_policy', '@page_cache_response_policy']
746
747
748
749
750
  redirect_response_subscriber:
    class: Drupal\Core\EventSubscriber\RedirectResponseSubscriber
    arguments: ['@url_generator']
    tags:
      - { name: event_subscriber }
751
752
753
754
755
  request_close_subscriber:
    class: Drupal\Core\EventSubscriber\RequestCloseSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@module_handler']
756
757
758
759
760
761
762
763
  config_import_subscriber:
    class: Drupal\Core\EventSubscriber\ConfigImportSubscriber
    tags:
      - { name: event_subscriber }
  config_snapshot_subscriber:
    class: Drupal\Core\EventSubscriber\ConfigSnapshotSubscriber
    tags:
      - { name: event_subscriber }
764
    arguments: ['@config.manager', '@config.storage', '@config.storage.snapshot']
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
  exception.default_json:
    class: Drupal\Core\EventSubscriber\ExceptionJsonSubscriber
    tags:
      - { name: event_subscriber }
  exception.default_html:
    class: Drupal\Core\EventSubscriber\DefaultExceptionHtmlSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@html_fragment_renderer', '@html_page_renderer']
  exception.default:
    class: Drupal\Core\EventSubscriber\DefaultExceptionSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@html_fragment_renderer', '@html_page_renderer', '@config.factory']
  exception.logger:
    class: Drupal\Core\EventSubscriber\ExceptionLoggingSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@logger.factory']
  exception.custom_page_json:
    class: Drupal\Core\EventSubscriber\ExceptionJsonSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@config.factory', '@path.alias_manager', '@http_kernel']
  exception.custom_page_html:
    class: Drupal\Core\EventSubscriber\CustomPageExceptionHtmlSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@config.factory', '@path.alias_manager', '@http_kernel', '@logger.channel.php']
  exception.fast_404_html:
    class: Drupal\Core\EventSubscriber\Fast404ExceptionHtmlSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@config.factory', '@http_kernel']
  exception.test_site:
    class: Drupal\Core\EventSubscriber\ExceptionTestSiteSubscriber
801
802
    tags:
      - { name: event_subscriber }
803
804
  route_processor_manager:
    class: Drupal\Core\RouteProcessor\RouteProcessorManager
805
806
    tags:
      - { name: service_collector, tag: route_processor_outbound, call: addOutbound }
807
808
  path_processor_manager:
    class: Drupal\Core\PathProcessor\PathProcessorManager
809
810
811
    tags:
      - { name: service_collector, tag: path_processor_inbound, call: addInbound }
      - { name: service_collector, tag: path_processor_outbound, call: addOutbound }
812
813
814
815
816
817
818
819
  path_processor_decode:
    class: Drupal\Core\PathProcessor\PathProcessorDecode
    tags:
      - { name: path_processor_inbound, priority: 1000 }
  path_processor_front:
    class: Drupal\Core\PathProcessor\PathProcessorFront
    tags:
      - { name: path_processor_inbound, priority: 200 }
820
      - { name: path_processor_outbound, priority: 200 }
821
    arguments: ['@config.factory']
822
823
824
825
826
827
828
829
  path_processor_none:
    class: Drupal\Core\PathProcessor\PathProcessorNone
    tags:
      - { name: path_processor_outbound, priority: 200 }
  path_processor_current:
    class: Drupal\Core\PathProcessor\PathProcessorCurrent
    tags:
      - { name: path_processor_outbound, priority: 200 }
830
831
832
833
  path_processor_alias:
    class: Drupal\Core\PathProcessor\PathProcessorAlias
    tags:
      - { name: path_processor_inbound, priority: 100 }
834
      - { name: path_processor_outbound, priority: 300 }
835
    arguments: ['@path.alias_manager']
836
  route_processor_csrf:
837
838
839
840
    class: Drupal\Core\Access\RouteProcessorCsrf
    tags:
      - { name: route_processor_outbound }
    arguments: ['@csrf_token']
841
842
843
844
  transliteration:
    class: Drupal\Core\Transliteration\PHPTransliteration
  flood:
    class: Drupal\Core\Flood\DatabaseBackend
845
    arguments: ['@database', '@request_stack']
846
847
    tags:
      - { name: backend_overridable }
848
849
  plugin.manager.mail:
    class: Drupal\Core\Mail\MailManager
850
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@config.factory', '@logger.factory', '@string_translation']
851
852
  plugin.manager.condition:
    class: Drupal\Core\Condition\ConditionManager
853
    parent: default_plugin_manager
854
855
856
  plugin.manager.element_info:
    class: Drupal\Core\Render\ElementInfoManager
    parent: default_plugin_manager
857
858
859
860
861
862
863
864
865
866
867
  kernel_destruct_subscriber:
    class: Drupal\Core\EventSubscriber\KernelDestructionSubscriber
    tags:
      - { name: event_subscriber }
    calls:
      - [setContainer, ['@service_container']]
  ajax.subscriber:
    class: Drupal\Core\Ajax\AjaxSubscriber
    tags:
      - { name: event_subscriber }
  image.toolkit.manager:
868
    class: Drupal\Core\ImageToolkit\ImageToolkitManager
869
870
    arguments: ['@config.factory']
    parent: default_plugin_manager
871
872
  image.toolkit.operation.manager:
    class: Drupal\Core\ImageToolkit\ImageToolkitOperationManager
873
    arguments: ['@logger.channel.image']
874
    parent: default_plugin_manager
875
876
  image.factory:
    class: Drupal\Core\Image\ImageFactory
877
    arguments: ['@image.toolkit.manager']
878
879
  breadcrumb:
    class: Drupal\Core\Breadcrumb\BreadcrumbManager
880
    arguments: ['@module_handler']
881
882
    tags:
      - { name: service_collector, tag: breadcrumb_builder, call: addBuilder }
883
884
  token:
    class: Drupal\Core\Utility\Token
885
    arguments: ['@module_handler', '@cache.discovery', '@language_manager']
886
  batch.storage:
887
    class: Drupal\Core\Batch\BatchStorage
888
    arguments: ['@database', '@session_manager', '@csrf_token']
889
890
    tags:
      - { name: backend_overridable }
891
892
  replica_database_ignore__subscriber:
    class: Drupal\Core\EventSubscriber\ReplicaDatabaseIgnoreSubscriber
893
894
    tags:
      - {name: event_subscriber}
895
896
897
  country_manager:
    class: Drupal\Core\Locale\CountryManager
    arguments: ['@module_handler']
898
899
  date.formatter:
    class: Drupal\Core\Datetime\DateFormatter
900
    arguments: ['@entity.manager', '@language_manager', '@string_translation', '@config.factory']
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
  feed.bridge.reader:
    class: Drupal\Component\Bridge\ZfExtensionManagerSfContainer
    calls:
      - [setContainer, ['@service_container']]
    arguments: ['feed.reader.']
  feed.bridge.writer:
    class: Drupal\Component\Bridge\ZfExtensionManagerSfContainer
    calls:
      - [setContainer, ['@service_container']]
    arguments: ['feed.writer.']
# Zend Feed reader plugins
  feed.reader.dublincoreentry:
    class: Zend\Feed\Reader\Extension\DublinCore\Entry
  feed.reader.dublincorefeed:
    class: Zend\Feed\Reader\Extension\DublinCore\Feed
  feed.reader.contententry:
    class: Zend\Feed\Reader\Extension\Content\Entry
  feed.reader.atomentry:
    class: Zend\Feed\Reader\Extension\Atom\Entry
  feed.reader.atomfeed:
    class: Zend\Feed\Reader\Extension\Atom\Feed
  feed.reader.slashentry:
    class: Zend\Feed\Reader\Extension\Slash\Entry
  feed.reader.wellformedwebentry:
    class: Zend\Feed\Reader\Extension\WellFormedWeb\Entry
  feed.reader.threadentry:
    class: Zend\Feed\Reader\Extension\Thread\Entry
  feed.reader.podcastentry:
    class: Zend\Feed\Reader\Extension\Podcast\Entry
  feed.reader.podcastfeed:
    class: Zend\Feed\Reader\Extension\Podcast\Feed
# Zend Feed writer plugins
  feed.writer.atomrendererfeed:
    class: Zend\Feed\Writer\Extension\Atom\Renderer\Feed
  feed.writer.contentrendererentry:
    class: Zend\Feed\Writer\Extension\Content\Renderer\Entry
  feed.writer.dublincorerendererentry:
    class: Zend\Feed\Writer\Extension\DublinCore\Renderer\Entry
  feed.writer.dublincorerendererfeed:
    class: Zend\Feed\Writer\Extension\DublinCore\Renderer\Feed
  feed.writer.itunesentry:
    class: Zend\Feed\Writer\Extension\ITunes\Entry
  feed.writer.itunesfeed:
    class: Zend\Feed\Writer\Extension\ITunes\Feed
  feed.writer.itunesrendererentry:
    class: Zend\Feed\Writer\Extension\ITunes\Renderer\Entry
  feed.writer.itunesrendererfeed:
    class: Zend\Feed\Writer\Extension\ITunes\Renderer\Feed
  feed.writer.slashrendererentry:
    class: Zend\Feed\Writer\Extension\Slash\Renderer\Entry
  feed.writer.threadingrendererentry:
    class: Zend\Feed\Writer\Extension\Threading\Renderer\Entry
  feed.writer.wellformedwebrendererentry:
    class: Zend\Feed\Writer\Extension\WellFormedWeb\Renderer\Entry
955
956
  theme.manager:
    class: Drupal\Core\Theme\ThemeManager
957
    arguments: ['@theme.registry', '@theme.negotiator', '@theme.initialization', '@request_stack']
958
959
960
  theme.initialization:
    class: Drupal\Core\Theme\ThemeInitialization
    arguments: ['@theme_handler', '@state']
961
962
  theme.registry:
    class: Drupal\Core\Theme\Registry
963
    arguments: ['@cache.default', '@lock', '@module_handler']
964
965
    tags:
      - { name: needs_destruction }
966
967
  authentication:
    class: Drupal\Core\Authentication\AuthenticationManager
968
969
    tags:
      - { name: service_collector, tag: authentication_provider, call: addProvider }
970
971
972
973
974
  authentication_subscriber:
    class: Drupal\Core\EventSubscriber\AuthenticationSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@authentication']
975
  current_user:
976
    class: Drupal\Core\Session\AccountProxy
977
    arguments: ['@authentication', '@request_stack']
978
979
  session_manager:
    class: Drupal\Core\Session\SessionManager
980
    arguments: ['@request_stack', '@database', '@session_manager.metadata_bag', '@settings']
981
982
    tags:
      - { name: backend_overridable }
983
984
985
  session_manager.metadata_bag:
    class: Drupal\Core\Session\MetadataBag
    arguments: ['@settings']
986
987
  asset.css.collection_renderer:
    class: Drupal\Core\Asset\CssCollectionRenderer
988
    arguments: [ '@state' ]
989
990
991
992
993
994
995
996
997
998
999
  asset.css.collection_optimizer:
    class: Drupal\Core\Asset\CssCollectionOptimizer
    arguments: [ '@asset.css.collection_grouper', '@asset.css.optimizer', '@asset.css.dumper', '@state' ]
  asset.css.optimizer:
    class: Drupal\Core\Asset\CssOptimizer
  asset.css.collection_grouper:
    class: Drupal\Core\Asset\CssCollectionGrouper
  asset.css.dumper:
    class: Drupal\Core\Asset\AssetDumper
  asset.js.collection_renderer:
    class: Drupal\Core\Asset\JsCollectionRenderer
1000
    arguments: [ '@state' ]