core.services.yml 60.6 KB
Newer Older
1
parameters:
2
3
4
5
6
7
8
9
10
  session.storage.options:
    gc_probability: 1
    gc_divisor: 100
    gc_maxlifetime: 200000
    cookie_lifetime: 2000000
  twig.config:
    debug: false
    auto_reload: null
    cache: true
11
  renderer.config:
12
    required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions']
13
14
15
16
    auto_placeholder_conditions:
      max-age: 0
      contexts: ['session', 'user']
      tags: []
17
18
  factory.keyvalue:
    default: keyvalue.database
19
  http.response.debug_cacheability_headers: false
20
21
  factory.keyvalue.expirable:
    default: keyvalue.expirable.database
22
23
24
25
26
27
28
29
30
31
32
33
34
35
  filter_protocols:
    - http
    - https
    - ftp
    - news
    - nntp
    - tel
    - telnet
    - mailto
    - irc
    - ssh
    - sftp
    - webcal
    - rtsp
36
services:
37
38
  # Simple cache contexts, directly derived from the request context.
  cache_context.ip:
39
    class: Drupal\Core\Cache\Context\IpCacheContext
40
41
42
43
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
  cache_context.headers:
44
    class: Drupal\Core\Cache\Context\HeadersCacheContext
45
46
47
48
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
  cache_context.cookies:
49
    class: Drupal\Core\Cache\Context\CookiesCacheContext
50
51
52
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
53
54
55
56
57
  cache_context.session:
    class: Drupal\Core\Cache\Context\SessionCacheContext
    arguments: ['@request_stack']
    tags:
      - { name: cache.context}
58
  cache_context.request_format:
59
    class: Drupal\Core\Cache\Context\RequestFormatCacheContext
60
61
62
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
63
  cache_context.url:
64
    class: Drupal\Core\Cache\Context\UrlCacheContext
65
    arguments: ['@request_stack']
66
    tags:
67
      - { name: cache.context }
68
  cache_context.url.site:
69
    class: Drupal\Core\Cache\Context\SiteCacheContext
70
    arguments: ['@request_stack']
71
72
    tags:
      - { name: cache.context }
73
74
75
76
77
  cache_context.url.path:
    class: Drupal\Core\Cache\Context\PathCacheContext
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
78
  cache_context.url.query_args:
79
    class: Drupal\Core\Cache\Context\QueryArgsCacheContext
80
81
82
83
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
  cache_context.url.query_args.pagers:
84
    class: Drupal\Core\Cache\Context\PagersCacheContext
85
86
87
88
89
90
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }

  # Complex cache contexts, that depend on the routing system.
  cache_context.route:
91
    class: Drupal\Core\Cache\Context\RouteCacheContext
92
93
94
95
    arguments: ['@current_route_match']
    tags:
      - { name: cache.context }
  cache_context.route.name:
96
    class: Drupal\Core\Cache\Context\RouteNameCacheContext
97
98
99
100
    arguments: ['@current_route_match']
    tags:
      - { name: cache.context }
  cache_context.route.menu_active_trails:
101
    class: Drupal\Core\Cache\Context\MenuActiveTrailsCacheContext
102
103
104
105
106
107
108
109
110
    calls:
      - [setContainer, ['@service_container']]
    tags:
      - { name: cache.context }

  # Complex cache contexts, that may be calculated from a combination of
  # multiple aspects of the request context plus additional logic. Hence they
  # are their own roots.
  cache_context.user:
111
    class: Drupal\Core\Cache\Context\UserCacheContext
112
113
114
    arguments: ['@current_user']
    tags:
      - { name: cache.context}
115
  cache_context.user.permissions:
116
    class: Drupal\Core\Cache\Context\AccountPermissionsCacheContext
117
118
119
    arguments: ['@current_user', '@user_permissions_hash_generator']
    tags:
      - { name: cache.context}
120
  cache_context.user.roles:
121
    class: Drupal\Core\Cache\Context\UserRolesCacheContext
122
    arguments: ['@current_user']
123
124
    tags:
      - { name: cache.context}
125
  cache_context.user.is_super_user:
126
    class: Drupal\Core\Cache\Context\IsSuperUserCacheContext
127
128
129
130
    arguments: ['@current_user']
    tags:
      - { name: cache.context}
  cache_context.languages:
131
    class: Drupal\Core\Cache\Context\LanguagesCacheContext
132
133
134
135
    arguments: ['@language_manager']
    tags:
      - { name: cache.context}
  cache_context.theme:
136
    class: Drupal\Core\Cache\Context\ThemeCacheContext
137
    arguments: ['@theme.manager']
138
139
    tags:
      - { name: cache.context}
140
  cache_context.timezone:
141
    class: Drupal\Core\Cache\Context\TimeZoneCacheContext
142
143
    tags:
      - { name: cache.context}
144
145
146
147

  cache_factory:
    class: Drupal\Core\Cache\CacheFactory
    arguments: ['@settings', '%cache_default_bin_backends%']
148
149
    calls:
      - [setContainer, ['@service_container']]
150
  cache_contexts_manager:
151
    class: Drupal\Core\Cache\Context\CacheContextsManager
152
    arguments: ['@service_container', '%cache_contexts%' ]
153
154
155
156
157
158
159
160
161
162
163
164
  cache_tags.invalidator:
    parent: container.trait
    class: Drupal\Core\Cache\CacheTagsInvalidator
    calls:
      - [setContainer, ['@service_container']]
    tags:
      - { name: service_collector, call: addInvalidator, tag: cache_tags_invalidator }
  cache_tags.invalidator.checksum:
    class: Drupal\Core\Cache\DatabaseCacheTagsChecksum
    arguments: ['@database']
    tags:
      - { name: cache_tags_invalidator}
165
166
167
168
169
  cache.backend.chainedfast:
    class: Drupal\Core\Cache\ChainedFastBackendFactory
    arguments: ['@settings']
    calls:
      - [setContainer, ['@service_container']]
170
171
  cache.backend.database:
    class: Drupal\Core\Cache\DatabaseBackendFactory
172
    arguments: ['@database', '@cache_tags.invalidator.checksum']
173
174
  cache.backend.apcu:
    class: Drupal\Core\Cache\ApcuBackendFactory
175
    arguments: ['@app.root', '@site.path', '@cache_tags.invalidator.checksum']
176
177
  cache.backend.php:
    class: Drupal\Core\Cache\PhpBackendFactory
178
    arguments: ['@cache_tags.invalidator.checksum']
179
180
181
182
183
184
185
186
187
  cache.backend.memory:
    class: Drupal\Core\Cache\MemoryBackendFactory
  # A special cache bin that does not persist beyond the length of the request.
  cache.static:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin, default_backend: cache.backend.memory }
    factory: cache_factory:get
    arguments: [static]
188
189
190
  cache.bootstrap:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
191
      - { name: cache.bin, default_backend: cache.backend.chainedfast }
192
    factory: cache_factory:get
193
    arguments: [bootstrap]
194
195
196
  cache.config:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
197
      - { name: cache.bin, default_backend: cache.backend.chainedfast }
198
    factory: cache_factory:get
199
    arguments: [config]
200
  cache.default:
201
202
203
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
204
    factory: cache_factory:get
205
    arguments: [default]
206
207
208
209
  cache.entity:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
210
    factory: cache_factory:get
211
    arguments: [entity]
212
213
214
215
  cache.menu:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
216
    factory: cache_factory:get
217
    arguments: [menu]
218
  cache.render:
219
220
221
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
222
    factory: cache_factory:get
223
224
    arguments: [render]
  cache.data:
225
226
227
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
228
    factory: cache_factory:get
229
    arguments: [data]
230
231
232
  cache.discovery:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
233
      - { name: cache.bin, default_backend: cache.backend.chainedfast }
234
    factory: cache_factory:get
235
    arguments: [discovery]
236
237
238
239
  cache_router_rebuild_subscriber:
    class: Drupal\Core\EventSubscriber\CacheRouterRebuildSubscriber
    tags:
      - { name: event_subscriber }
240
241
  page_cache_request_policy:
    class: Drupal\Core\PageCache\DefaultRequestPolicy
242
    arguments: ['@session_configuration']
243
244
245
246
247
248
    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}
249
    lazy: true
250
251
252
253
  page_cache_kill_switch:
    class: Drupal\Core\PageCache\ResponsePolicy\KillSwitch
    tags:
      - { name: page_cache_response_policy }
254
      - { name: dynamic_page_cache_response_policy }
255
256
257
258
259
260
  page_cache_no_cache_routes:
    class: Drupal\Core\PageCache\ResponsePolicy\DenyNoCacheRoutes
    arguments: ['@current_route_match']
    public: false
    tags:
      - { name: page_cache_response_policy }
261
      - { name: dynamic_page_cache_response_policy }
262
263
264
265
266
  page_cache_no_server_error:
    class: Drupal\Core\PageCache\ResponsePolicy\NoServerError
    public: false
    tags:
      - { name: page_cache_response_policy }
267
      - { name: dynamic_page_cache_response_policy }
268
269
  config.manager:
    class: Drupal\Core\Config\ConfigManager
270
    arguments: ['@entity.manager', '@config.factory', '@config.typed', '@string_translation', '@config.storage', '@event_dispatcher']
271
272
273
  config.factory:
    class: Drupal\Core\Config\ConfigFactory
    tags:
274
      - { name: event_subscriber }
275
      - { name: service_collector, tag: 'config.factory.override', call: addOverride }
276
    arguments: ['@config.storage', '@event_dispatcher', '@config.typed']
277
278
279
280
  config.importer_subscriber:
    class: Drupal\Core\Config\Importer\FinalMissingContentSubscriber
    tags:
      - { name: event_subscriber }
281
282
  config.installer:
    class: Drupal\Core\Config\ConfigInstaller
283
    arguments: ['@config.factory', '@config.storage', '@config.typed', '@config.manager', '@event_dispatcher']
284
    lazy: true
285
  config.storage:
286
287
    class: Drupal\Core\Config\CachedStorage
    arguments: ['@config.storage.active', '@cache.config']
288
289
290
  config.storage.active:
    class: Drupal\Core\Config\DatabaseStorage
    arguments: ['@database', 'config']
291
    public: false
292
293
    tags:
      - { name: backend_overridable }
294
295
  # @deprecated in Drupal 8.0.x and will be removed before 9.0.0. Use
  #   config.storage.sync instead.
296
297
  config.storage.staging:
    class: Drupal\Core\Config\FileStorage
298
299
300
    factory: Drupal\Core\Config\FileStorageFactory::getSync
  config.storage.sync:
    alias: config.storage.staging
301
302
303
  config.storage.snapshot:
    class: Drupal\Core\Config\DatabaseStorage
    arguments: ['@database', config_snapshot]
304
305
    tags:
      - { name: backend_overridable }
306
  config.storage.schema:
307
308
    class: Drupal\Core\Config\ExtensionInstallStorage
    arguments: ['@config.storage', 'config/schema']
309
310
  config.typed:
    class: Drupal\Core\Config\TypedConfigManager
311
312
313
    arguments: ['@config.storage', '@config.storage.schema', '@cache.discovery', '@module_handler']
    tags:
      - { name: plugin_manager_cache_clear }
314
315
316
  context.handler:
    class: Drupal\Core\Plugin\Context\ContextHandler
    arguments: ['@typed_data_manager']
317
318
319
  context.repository:
    class: Drupal\Core\Plugin\Context\LazyContextRepository
    arguments: ['@service_container']
320
321
  cron:
    class: Drupal\Core\Cron
322
    arguments: ['@module_handler', '@lock', '@queue', '@state', '@account_switcher', '@logger.channel.cron', '@plugin.manager.queue_worker']
323
    lazy: true
324
325
326
  diff.formatter:
    class: Drupal\Core\Diff\DiffFormatter
    arguments: ['@config.factory']
327
328
  database:
    class: Drupal\Core\Database\Connection
329
    factory: Drupal\Core\Database\Database::getConnection
330
    arguments: [default]
331
332
333
  file_system:
    class: Drupal\Core\File\FileSystem
    arguments: ['@stream_wrapper_manager', '@settings', '@logger.channel.file']
334
335
  form_builder:
    class: Drupal\Core\Form\FormBuilder
336
    arguments: ['@form_validator', '@form_submitter', '@form_cache', '@module_handler', '@event_dispatcher', '@request_stack', '@class_resolver', '@element_info', '@theme.manager', '@?csrf_token']
337
338
  form_validator:
    class: Drupal\Core\Form\FormValidator
339
    arguments: ['@request_stack', '@string_translation', '@csrf_token', '@logger.channel.form', '@form_error_handler']
340
341
342
  form_submitter:
    class: Drupal\Core\Form\FormSubmitter
    arguments: ['@request_stack', '@url_generator']
343
344
  form_error_handler:
    class: Drupal\Core\Form\FormErrorHandler
345
346
  form_cache:
    class: Drupal\Core\Form\FormCache
347
    arguments: ['@app.root', '@keyvalue.expirable', '@module_handler', '@current_user', '@csrf_token', '@logger.channel.form', '@request_stack', '@page_cache_request_policy']
348
    public: false  # Private to form_builder
349
350
  keyvalue:
    class: Drupal\Core\KeyValueStore\KeyValueFactory
351
    arguments: ['@service_container', '%factory.keyvalue%']
352
353
  keyvalue.database:
    class: Drupal\Core\KeyValueStore\KeyValueDatabaseFactory
354
    arguments: ['@serialization.phpserialize', '@database']
355
356
  keyvalue.expirable:
    class: Drupal\Core\KeyValueStore\KeyValueExpirableFactory
357
    arguments: ['@service_container', '%factory.keyvalue.expirable%']
358
359
  keyvalue.expirable.database:
    class: Drupal\Core\KeyValueStore\KeyValueDatabaseExpirableFactory
360
    arguments: ['@serialization.phpserialize', '@database']
361
362
363
364
365
  logger.factory:
    class: Drupal\Core\Logger\LoggerChannelFactory
    parent: container.trait
    tags:
      - { name: service_collector, tag: logger, call: addLogger }
366
367
  logger.channel_base:
    abstract: true
368
    class: Drupal\Core\Logger\LoggerChannel
369
    factory: logger.factory:get
370
371
  logger.channel.default:
    parent: logger.channel_base
372
    arguments: ['system']
373
  logger.channel.php:
374
    parent: logger.channel_base
375
    arguments: ['php']
376
  logger.channel.image:
377
    parent: logger.channel_base
378
    arguments: ['image']
379
  logger.channel.cron:
380
    parent: logger.channel_base
381
    arguments: ['cron']
382
383
  logger.channel.file:
    class: Drupal\Core\Logger\LoggerChannel
384
    factory: logger.factory:get
385
    arguments: ['file']
386
  logger.channel.form:
387
    parent: logger.channel_base
388
    arguments: ['form']
389
390
  logger.log_message_parser:
    class: Drupal\Core\Logger\LogMessageParser
391
392
393
394
395
396
397
398

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

399
  settings:
400
    class: Drupal\Core\Site\Settings
401
    factory: Drupal\Core\Site\Settings::getInstance
402
  state:
403
    class: Drupal\Core\State\State
404
    arguments: ['@keyvalue']
405
406
407
408
409
410
411
412
413
414
415
416
  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 }
417
    arguments: [path_alias_whitelist, '@cache.default', '@lock', '@state', '@path.alias_storage']
418
419
  path.alias_manager:
    class: Drupal\Core\Path\AliasManager
420
    arguments: ['@path.alias_storage', '@path.alias_whitelist', '@language_manager', '@cache.data']
421
422
423
  path.current:
    class: Drupal\Core\Path\CurrentPathStack
    arguments: ['@request_stack']
424
425
426
427
428
429
430
431
432
  http_handler_stack:
    class: GuzzleHttp\HandlerStack
    public: false
    factory: GuzzleHttp\HandlerStack::create
    configurator: ['@http_handler_stack_configurator', configure]
  http_handler_stack_configurator:
    class: Drupal\Core\Http\HandlerStackConfigurator
    public: false
    arguments: ['@service_container']
433
  http_client:
434
435
436
437
438
    class: GuzzleHttp\Client
    factory: http_client_factory:fromOptions
  http_client_factory:
    class: Drupal\Core\Http\ClientFactory
    arguments: ['@http_handler_stack']
439
440
  theme.negotiator:
    class: Drupal\Core\Theme\ThemeNegotiator
441
    arguments: ['@access_check.theme']
442
443
    tags:
      - { name: service_collector, tag: theme_negotiator, call: addNegotiator }
444
445
446
447
448
449
450
  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
451
    arguments: ['@csrf_token', '@config.factory', '@request_stack']
452
453
    tags:
      - { name: theme_negotiator, priority: 1000 }
454
455
456
  container.namespaces:
    class: ArrayObject
    arguments: [ '%container.namespaces%' ]
457
458
459
460
  container.trait:
    abstract: true
    calls:
      - [setContainer, ['@service_container']]
461
462
  default_plugin_manager:
    abstract: true
463
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
464
  module_handler:
465
    class: Drupal\Core\Extension\ModuleHandler
466
467
468
    arguments: ['@app.root', '%container.modules%', '@cache.bootstrap']
  module_installer:
    class: Drupal\Core\Extension\ModuleInstaller
469
470
    tags:
      - { name: service_collector, tag: 'module_install.uninstall_validator', call: addUninstallValidator }
471
    arguments: ['@app.root', '@module_handler', '@kernel']
472
    lazy: true
473
474
475
476
  content_uninstall_validator:
    class: Drupal\Core\Entity\ContentUninstallValidator
    tags:
      - { name: module_install.uninstall_validator }
477
    arguments: ['@entity.manager', '@string_translation']
478
    lazy: true
479
480
481
482
  field_uninstall_validator:
    class: Drupal\Core\Field\FieldModuleUninstallValidator
    tags:
      - { name: module_install.uninstall_validator }
483
    arguments: ['@entity.manager', '@string_translation']
484
    lazy: true
485
486
487
488
489
490
  required_module_uninstall_validator:
    class: Drupal\Core\Extension\RequiredModuleUninstallValidator
    tags:
      - { name: module_install.uninstall_validator }
    arguments: ['@string_translation']
    lazy: true
491
492
  theme_handler:
    class: Drupal\Core\Extension\ThemeHandler
493
494
495
496
    arguments: ['@app.root', '@config.factory', '@module_handler', '@state', '@info_parser']
  theme_installer:
    class: Drupal\Core\Extension\ThemeInstaller
    arguments: ['@theme_handler', '@config.factory', '@config.installer', '@module_handler', '@config.manager', '@asset.css.collection_optimizer', '@router.builder', '@logger.channel.default', '@state']
497
  entity.manager:
498
    class: Drupal\Core\Entity\EntityManager
499
    parent: container.trait
500
    # @todo Remove this tag in https://www.drupal.org/node/2549143.
501
502
    tags:
      - { name: plugin_manager_cache_clear }
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
  entity_type.manager:
    class: Drupal\Core\Entity\EntityTypeManager
    arguments: ['@container.namespaces', '@module_handler', '@cache.discovery', '@string_translation', '@class_resolver']
    parent: container.trait
    tags:
      - { name: plugin_manager_cache_clear }
  entity_type.repository:
    class: Drupal\Core\Entity\EntityTypeRepository
    arguments: ['@entity_type.manager']
  entity_type.bundle.info:
    class: Drupal\Core\Entity\EntityTypeBundleInfo
    arguments: ['@entity_type.manager', '@language_manager', '@module_handler', '@typed_data_manager', '@cache.discovery']
  entity.repository:
    class: Drupal\Core\Entity\EntityRepository
    arguments: ['@entity_type.manager', '@language_manager']
  entity_display.repository:
    class: Drupal\Core\Entity\EntityDisplayRepository
    arguments: ['@entity_type.manager', '@module_handler', '@cache.discovery', '@language_manager']
  entity_field.manager:
    class: Drupal\Core\Entity\EntityFieldManager
    arguments: ['@entity_type.manager', '@entity_type.bundle.info', '@entity_display.repository', '@typed_data_manager', '@language_manager', '@keyvalue', '@module_handler', '@cache.discovery']
  entity_type.listener:
    class: Drupal\Core\Entity\EntityTypeListener
    arguments: ['@entity_type.manager', '@entity_field.manager', '@event_dispatcher', '@entity.last_installed_schema.repository']
  entity_bundle.listener:
    class: Drupal\Core\Entity\EntityBundleListener
    arguments: ['@entity_type.manager', '@entity_type.bundle.info', '@entity_field.manager', '@module_handler']
530
531
532
533
534
  entity_route_subscriber:
    class: Drupal\Core\EventSubscriber\EntityRouteProviderSubscriber
    arguments: ['@entity.manager']
    tags:
      - { name: event_subscriber }
535
536
537
  entity.definition_update_manager:
    class: Drupal\Core\Entity\EntityDefinitionUpdateManager
    arguments: ['@entity.manager']
538
539
540
541
542
543
544
545
546
  entity.last_installed_schema.repository:
    class: Drupal\Core\Entity\EntityLastInstalledSchemaRepository
    arguments: ['@keyvalue']
  field_storage_definition.listener:
    class: Drupal\Core\Field\FieldStorageDefinitionListener
    arguments: ['@entity_type.manager', '@event_dispatcher', '@entity.last_installed_schema.repository', '@entity_field.manager']
  field_definition.listener:
    class: Drupal\Core\Field\FieldDefinitionListener
    arguments: ['@entity_type.manager', '@entity_field.manager', '@keyvalue', '@cache.discovery']
547
548
549
  entity.form_builder:
    class: Drupal\Core\Entity\EntityFormBuilder
    arguments: ['@entity.manager', '@form_builder']
550
551
552
553
554
  entity.bundle_config_import_validator:
    class: Drupal\Core\Entity\Event\BundleConfigImportValidate
    arguments: ['@config.manager', '@entity.manager']
    tags:
      - { name: event_subscriber }
555
556
557
  entity.autocomplete_matcher:
    class: Drupal\Core\Entity\EntityAutocompleteMatcher
    arguments: ['@plugin.manager.entity_reference_selection']
558
559
560
  plugin.manager.entity_reference_selection:
    class: Drupal\Core\Entity\EntityReferenceSelection\SelectionPluginManager
    parent: default_plugin_manager
561
562
563
  plugin.manager.block:
    class: Drupal\Core\Block\BlockManager
    parent: default_plugin_manager
564
565
  plugin.manager.field.field_type:
    class: Drupal\Core\Field\FieldTypePluginManager
566
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@typed_data_manager']
567
568
  plugin.manager.field.widget:
    class: Drupal\Core\Field\WidgetPluginManager
569
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@plugin.manager.field.field_type']
570
571
  plugin.manager.field.formatter:
    class: Drupal\Core\Field\FormatterPluginManager
572
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@plugin.manager.field.field_type']
573
574
  plugin.manager.archiver:
    class: Drupal\Core\Archiver\ArchiverManager
575
    parent: default_plugin_manager
576
577
  plugin.manager.action:
    class: Drupal\Core\Action\ActionManager
578
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
579
580
581
  plugin.manager.menu.link:
    class: Drupal\Core\Menu\MenuLinkManager
    arguments: ['@menu.tree_storage', '@menu_link.static.overrides', '@module_handler']
582
583
  menu.link_tree:
    class: Drupal\Core\Menu\MenuLinkTree
584
    arguments: ['@menu.tree_storage', '@plugin.manager.menu.link', '@router.route_provider', '@menu.active_trail', '@controller_resolver']
585
586
  menu.default_tree_manipulators:
    class: Drupal\Core\Menu\DefaultMenuLinkTreeManipulators
587
    arguments: ['@access_manager', '@current_user', '@entity.query']
588
589
  menu.active_trail:
    class: Drupal\Core\Menu\MenuActiveTrail
590
591
592
    arguments: ['@plugin.manager.menu.link', '@current_route_match', '@cache.menu', '@lock']
    tags:
      - { name: needs_destruction }
593
594
595
  menu.parent_form_selector:
    class: Drupal\Core\Menu\MenuParentFormSelector
    arguments: ['@menu.link_tree', '@entity.manager', '@string_translation']
596
597
  plugin.manager.menu.local_action:
    class: Drupal\Core\Menu\LocalActionManager
598
    arguments: ['@controller_resolver', '@request_stack', '@current_route_match', '@router.route_provider', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user']
599
600
  plugin.manager.menu.local_task:
    class: Drupal\Core\Menu\LocalTaskManager
601
    arguments: ['@controller_resolver', '@request_stack', '@current_route_match', '@router.route_provider', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user']
602
603
  plugin.manager.menu.contextual_link:
    class: Drupal\Core\Menu\ContextualLinkManager
604
    arguments: ['@controller_resolver', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user', '@request_stack']
605
606
607
  plugin.manager.display_variant:
    class: Drupal\Core\Display\VariantManager
    parent: default_plugin_manager
608
609
610
  plugin.manager.queue_worker:
    class: Drupal\Core\Queue\QueueWorkerManager
    parent: default_plugin_manager
611
612
  plugin.cache_clearer:
    class: Drupal\Core\Plugin\CachedDiscoveryClearer
613
    lazy: true
614
615
616
617
618
  paramconverter.menu_link:
    class: Drupal\Core\ParamConverter\MenuLinkPluginConverter
    tags:
      - { name: paramconverter }
    arguments: ['@plugin.manager.menu.link']
619
    lazy: true
620
621
  menu.tree_storage:
    class: Drupal\Core\Menu\MenuTreeStorage
622
    arguments: ['@database', '@cache.menu', '@cache_tags.invalidator', 'menu_tree']
623
    public: false  # Private to plugin.manager.menu.link and menu.link_tree
624
625
    tags:
      - { name: backend_overridable }
626
627
628
  menu_link.static.overrides:
    class: Drupal\Core\Menu\StaticMenuLinkOverrides
    arguments: ['@config.factory']
629
630
  request_stack:
    class: Symfony\Component\HttpFoundation\RequestStack
631
632
    tags:
      - { name: persist }
633
634
635
  current_route_match:
     class: Drupal\Core\Routing\CurrentRouteMatch
     arguments: ['@request_stack']
636
  event_dispatcher:
637
    class: Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher
638
    arguments: ['@service_container']
639
640
  app.root:
    class: SplString
641
    factory: app.root.factory:get
642
643
    tags:
      - { name: parameter_service }
644
645
646
  app.root.factory:
    class: Drupal\Core\AppRootFactory
    arguments: ['@kernel']
647
    public: false
648
649
650
651
652
653
654
655
656
  site.path:
    class: SplString
    factory: site.path.factory:get
    tags:
      - { name: parameter_service }
  site.path.factory:
    class: Drupal\Core\SitePathFactory
    arguments: ['@kernel']
    public: false
657
  controller_resolver:
658
    class: Drupal\Core\Controller\ControllerResolver
659
    arguments: ['@psr7.http_message_factory', '@class_resolver']
660
661
662
663
  class_resolver:
    class: Drupal\Core\DependencyInjection\ClassResolver
    calls:
      - [setContainer, ['@service_container']]
664
665
666
  title_resolver:
    class: Drupal\Core\Controller\TitleResolver
    arguments: ['@controller_resolver', '@string_translation']
667
  http_kernel:
668
    class: Stack\StackedHttpKernel
669
  http_kernel.basic:
670
    class: Symfony\Component\HttpKernel\HttpKernel
671
    arguments: ['@event_dispatcher', '@controller_resolver', '@request_stack']
672
673
674
675
  http_middleware.negotiation:
    class: Drupal\Core\StackMiddleware\NegotiationMiddleware
    tags:
      - { name: http_middleware, priority: 400 }
676
677
678
679
680
681
682
683
684
685
  http_middleware.reverse_proxy:
    class: Drupal\Core\StackMiddleware\ReverseProxyMiddleware
    arguments: ['@settings']
    tags:
      - { name: http_middleware, priority: 300 }
  http_middleware.kernel_pre_handle:
    class: Drupal\Core\StackMiddleware\KernelPreHandle
    arguments: ['@kernel']
    tags:
      - { name: http_middleware, priority: 100 }
686
687
688
689
690
691
  http_middleware.session:
    class: Drupal\Core\StackMiddleware\Session
    tags:
      - { name: http_middleware, priority: 50 }
    calls:
      - [setContainer, ['@service_container']]
692
693
694
695
  psr7.http_foundation_factory:
    class: Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory
  psr7.http_message_factory:
    class: Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory
696
697
  language_manager:
    class: Drupal\Core\Language\LanguageManager
698
    arguments: ['@language.default']
699
700
701
702
703
  language.current_language_context:
    class: Drupal\Core\Language\ContextProvider\CurrentLanguageContext
    arguments: ['@language_manager']
    tags:
      - { name: 'context_provider' }
704
705
706
  language.default:
    class: Drupal\Core\Language\LanguageDefault
    arguments: ['%language.default_values%']
707
708
  string_translator.custom_strings:
    class: Drupal\Core\StringTranslation\Translator\CustomStrings
709
    arguments: ['@settings']
710
711
712
713
    tags:
      - { name: string_translator, priority: 30 }
  string_translation:
    class: Drupal\Core\StringTranslation\TranslationManager
714
    arguments: ['@language.default']
715
716
    tags:
      - { name: service_collector, tag: string_translator, call: addTranslator }
717
  database.replica:
718
    class: Drupal\Core\Database\Connection
719
    factory: Drupal\Core\Database\Database::getConnection
720
    arguments: [replica]
721
  typed_data_manager:
722
    class: Drupal\Core\TypedData\TypedDataManager
723
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@class_resolver']
724
725
    calls:
      - [setValidationConstraintManager, ['@validation.constraint']]
726
727
    tags:
      - { name: plugin_manager_cache_clear }
728
729
  validation.constraint:
    class: Drupal\Core\Validation\ConstraintManager
730
    parent: default_plugin_manager
731
732
    tags:
      - { name: plugin_manager_cache_clear }
733
734
  lock:
    class: Drupal\Core\Lock\DatabaseLockBackend
735
    arguments: ['@database']
736
737
    tags:
      - { name: backend_overridable }
738
    lazy: true
739
740
741
  lock.persistent:
    class: Drupal\Core\Lock\PersistentDatabaseLockBackend
    arguments: ['@database']
742
743
    tags:
      - { name: backend_overridable }
744
    lazy: true
745
  router.request_context:
746
    class: Drupal\Core\Routing\RequestContext
747
748
    tags:
      - { name: persist }
749
750
    calls:
      - [fromRequestStack, ['@request_stack']]
751
752
  router.admin_context:
    class: Drupal\Core\Routing\AdminContext
753
    arguments: ['@current_route_match']
754
755
  router.route_provider:
    class: Drupal\Core\Routing\RouteProvider
756
    arguments: ['@database', '@state', '@path.current', '@cache.data', '@path_processor_manager', '@cache_tags.invalidator']
757
758
    tags:
      - { name: event_subscriber }
759
      - { name: backend_overridable }
760
761
  router.route_preloader:
    class: Drupal\Core\Routing\RoutePreloader
762
    arguments: ['@router.route_provider', '@state', '@cache.bootstrap']
763
764
    tags:
      - { name: 'event_subscriber' }
765
766
  router.matcher.final_matcher:
    class: Drupal\Core\Routing\UrlMatcher
767
    arguments: ['@path.current']
768
769
770
771
772
  router.matcher:
    class: Symfony\Cmf\Component\Routing\NestedMatcher\NestedMatcher
    arguments: ['@router.route_provider']
    calls:
      - [setFinalMatcher, ['@router.matcher.final_matcher']]
773
    tags:
774
775
776
777
778
779
780
781
782
783
784
      - { name: service_collector, tag: non_lazy_route_filter, call: addRouteFilter }
  route_filter.lazy_collector:
    class: Drupal\Core\Routing\LazyRouteFilter
    tags:
      - { name: non_lazy_route_filter }
    parent: container.trait
  route_filter_subscriber:
    class: Drupal\Core\EventSubscriber\RouteFilterSubscriber
    arguments: ['@route_filter.lazy_collector']
    tags:
      - { name: event_subscriber }
785
  url_generator.non_bubbling:
786
    class: Drupal\Core\Routing\UrlGenerator
787
    arguments: ['@router.route_provider', '@path_processor_manager', '@route_processor_manager', '@request_stack', '%filter_protocols%']
788
789
790
791
792
793
    public: false
    calls:
      - [setContext, ['@?router.request_context']]
  url_generator:
    class: Drupal\Core\Render\MetadataBubblingUrlGenerator
    arguments: ['@url_generator.non_bubbling', '@renderer']
794
    calls:
795
      - [setContext, ['@?router.request_context']]
796
797
798
  redirect.destination:
    class: Drupal\Core\Routing\RedirectDestination
    arguments: ['@request_stack', '@url_generator']
799
800
  unrouted_url_assembler:
    class: Drupal\Core\Utility\UnroutedUrlAssembler
801
    arguments: ['@request_stack', '@path_processor_manager', '%filter_protocols%']
802
803
  link_generator:
    class: Drupal\Core\Utility\LinkGenerator
804
    arguments: ['@url_generator', '@module_handler', '@renderer']
805
806
807
  router:
    class: Drupal\Core\Routing\AccessAwareRouter
    arguments: ['@router.no_access_checks', '@access_manager', '@current_user']
808
809
  router.dynamic:
    class: Symfony\Cmf\Component\Routing\DynamicRouter
810
    arguments: ['@router.request_context', '@router.matcher', '@url_generator']
811
    tags:
812
      - { name: service_collector, tag: non_lazy_route_enhancer, call: addRouteEnhancer }
813
  router.no_access_checks:
814
815
816
817
    class: Symfony\Cmf\Component\Routing\ChainRouter
    calls:
      - [setContext, ['@router.request_context']]
      - [add, ['@router.dynamic']]
818
819
820
821
822
  router.path_roots_subscriber:
    class: Drupal\Core\EventSubscriber\PathRootsSubscriber
    arguments: ['@state']
    tags:
      - { name: event_subscriber }
823
824
  entity.query:
    class: Drupal\Core\Entity\Query\QueryFactory
825
    arguments: ['@entity.manager']
826
827
828
829
    calls:
      - [setContainer, ['@service_container']]
  entity.query.config:
    class: Drupal\Core\Config\Entity\Query\QueryFactory
830
831
832
    arguments: ['@config.factory', '@keyvalue', '@config.manager']
    tags:
      - { name: event_subscriber }
833
834
835
  entity.query.sql:
    class: Drupal\Core\Entity\Query\Sql\QueryFactory
    arguments: ['@database']
836
837
    tags:
      - { name: backend_overridable }
838
839
840
  pgsql.entity.query.sql:
    class: Drupal\Core\Entity\Query\Sql\pgsql\QueryFactory
    arguments: ['@database']
841
842
  entity.query.null:
    class: Drupal\Core\Entity\Query\Null\QueryFactory
843
844
845
  entity.query.keyvalue:
    class: Drupal\Core\Entity\KeyValueStore\Query\QueryFactory
    arguments: ['@keyvalue']
846
847
  router.dumper:
    class: Drupal\Core\Routing\MatcherDumper
848
    arguments: ['@database', '@state']
849
850
    tags:
      - { name: backend_overridable }
851
    lazy: true
852
853
  router.builder:
    class: Drupal\Core\Routing\RouteBuilder
854
    arguments: ['@router.dumper', '@lock', '@event_dispatcher', '@module_handler', '@controller_resolver', '@access_manager.check_provider']
855
    lazy: true
856
    tags:
857
      - { name: needs_destruction }
858
859
860
  menu.rebuild_subscriber:
    class: Drupal\Core\EventSubscriber\MenuRouterRebuildSubscriber
    arguments: ['@lock', '@plugin.manager.menu.link']
861
862
    tags:
      - { name: event_subscriber }
863
864
  path.alias_storage:
    class: Drupal\Core\Path\AliasStorage
865
    arguments: ['@database', '@module_handler']
866
867
    tags:
      - { name: backend_overridable }
868
869
  path.matcher:
    class: Drupal\Core\Path\PathMatcher
870
    arguments: ['@config.factory', '@current_route_match']
871
872
  path.validator:
    class: Drupal\Core\Path\PathValidator
873
    arguments: ['@router', '@router.no_access_checks', '@current_user', '@path_processor_manager']
874

875
876
877
878
879
880
881
882
883
# 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]
884
885
  request_format_route_filter:
    class: Drupal\Core\Routing\RequestFormatRouteFilter
886
887
888
889
    tags:
      - { name: route_filter }
  content_type_header_matcher:
    class: Drupal\Core\Routing\ContentTypeHeaderMatcher
890
891
892
893
    tags:
      - { name: route_filter }
  paramconverter_manager:
    class: Drupal\Core\ParamConverter\ParamConverterManager
894
895
    tags:
      - { name: service_collector, tag: paramconverter, call: addConverter }
896
897
898
899
900
  paramconverter_subscriber:
    class: Drupal\Core\EventSubscriber\ParamConverterSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@paramconverter_manager']
901
902
903
904
  paramconverter.entity:
    class: Drupal\Core\ParamConverter\EntityConverter
    tags:
      - { name: paramconverter }
905
    arguments: ['@entity.manager']
906
907
908
909
910
911
  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']
912
    lazy: true
913
914
915
916
917
  route_subscriber.module:
    class: Drupal\Core\EventSubscriber\ModuleRouteSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@module_handler']
918
919
  resolver_manager.entity:
    class: Drupal\Core\Entity\EntityResolverManager
920
    arguments: ['@entity.manager', '@class_resolver']
921
922
923
924
  route_subscriber.entity:
    class: Drupal\Core\EventSubscriber\EntityRouteAlterSubscriber
    tags:
      - { name: event_subscriber }
925
    arguments: ['@resolver_manager.entity']
926
927
928
  ajax_response.subscriber:
    class: Drupal\Core\EventSubscriber\AjaxResponseSubscriber
    arguments: ['@ajax_response.attachments_processor']
929
930
    tags:
      - { name: event_subscriber }
931
932
  form_ajax_subscriber:
    class: Drupal\Core\Form\EventSubscriber\FormAjaxSubscriber
933
    arguments: ['@form_ajax_response_builder', '@string_translation']
934
935
    tags:
      - { name: event_subscriber }
936
937
938
939
940
941
942
943
944
945
  route_enhancer.lazy_collector:
    class: Drupal\Core\Routing\LazyRouteEnhancer
    tags:
      - { name: non_lazy_route_enhancer, priority: 5000 }
    parent: container.trait
  route_enhancer_subscriber:
    class: Drupal\Core\EventSubscriber\RouteEnhancerSubscriber
    arguments: ['@route_enhancer.lazy_collector']
    tags:
      - { name: event_subscriber }
946
947
948
949
950
951
  route_enhancer.param_conversion:
    class: Drupal\Core\Routing\Enhancer\ParamConversionEnhancer
    arguments: ['@paramconverter_manager']
    tags:
      - { name: route_enhancer }
      - { name: event_subscriber }
952
953
954
955
  route_enhancer.form:
    class: Drupal\Core\Routing\Enhancer\FormRouteEnhancer
    tags:
      - { name: route_enhancer }
956
957
  route_enhancer.entity:
    class: Drupal\Core\Entity\Enhancer\EntityRouteEnhancer
958
    tags: