diff --git a/bundles/best_practices.rst b/bundles/best_practices.rst
index c6e0521db82..64992cae3a9 100644
--- a/bundles/best_practices.rst
+++ b/bundles/best_practices.rst
@@ -421,8 +421,8 @@ The end user can provide values in any configuration file:
-
+ https://symfony.com/schema/dic/services/services-1.0.xsd"
+ >
fabien@example.com
@@ -432,7 +432,13 @@ The end user can provide values in any configuration file:
.. code-block:: php
// config/services.php
- $container->setParameter('acme_blog.author.email', 'fabien@example.com');
+ namespace Symfony\Component\DependencyInjection\Loader\Configurator;
+
+ return static function (ContainerConfigurator $container) {
+ $container->parameters()
+ ->set('acme_blog.author.email', 'fabien@example.com')
+ ;
+ };
Retrieve the configuration parameters in your code from the container::
diff --git a/bundles/configuration.rst b/bundles/configuration.rst
index 25254b7efcb..41c34ee7bbc 100644
--- a/bundles/configuration.rst
+++ b/bundles/configuration.rst
@@ -20,19 +20,22 @@ as integration of other related components:
.. code-block:: yaml
+ # config/packages/framework.yaml
framework:
form: true
.. code-block:: xml
+
-
+ https://symfony.com/schema/dic/symfony/symfony-1.0.xsd"
+ >
@@ -40,9 +43,14 @@ as integration of other related components:
.. code-block:: php
- $container->loadFromExtension('framework', [
- 'form' => true,
- ]);
+ // config/packages/framework.php
+ namespace Symfony\Component\DependencyInjection\Loader\Configurator;
+
+ return static function (ContainerConfigurator $container) {
+ $container->extension('framework', [
+ 'form' => true,
+ ]);
+ };
Using the Bundle Extension
--------------------------
@@ -69,24 +77,28 @@ can add some configuration that looks like this:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:acme-social="http://example.org/schema/dic/acme_social"
xsi:schemaLocation="http://symfony.com/schema/dic/services
- https://symfony.com/schema/dic/services/services-1.0.xsd">
-
+ https://symfony.com/schema/dic/services/services-1.0.xsd"
+ >
-
+
-
-
.. code-block:: php
// config/packages/acme_social.php
- $container->loadFromExtension('acme_social', [
- 'twitter' => [
- 'client_id' => 123,
- 'client_secret' => 'your_secret',
- ],
- ]);
+ namespace Symfony\Component\DependencyInjection\Loader\Configurator;
+
+ return static function (ContainerConfigurator $container) {
+ $container->extension('acme_social', [
+ 'twitter' => [
+ 'client_id' => 123,
+ 'client_secret' => 'your_secret',
+ ],
+ ]);
+ };
The basic idea is that instead of having the user override individual
parameters, you let the user configure just a few, specifically created,
@@ -242,8 +254,8 @@ For example, imagine your bundle has the following example config:
-
+ https://symfony.com/schema/dic/services/services-1.0.xsd"
+ >
.. code-block:: php
// config/packages/acme_something.php
- $container->loadFromExtension('acme_something', [
- // ...
- 'use_acme_goodbye' => false,
- 'entity_manager_name' => 'non_default',
- ]);
- $container->loadFromExtension('acme_other', [
- // ...
- 'use_acme_goodbye' => false,
- ]);
+ namespace Symfony\Component\DependencyInjection\Loader\Configurator;
+
+ return static function (ContainerConfigurator $container) {
+ $container->extension('acme_something', [
+ // ...
+ 'use_acme_goodbye' => false,
+ 'entity_manager_name' => 'non_default',
+ ]);
+ $container->extension('acme_other', [
+ // ...
+ 'use_acme_goodbye' => false,
+ ]);
+ };
More than one Bundle using PrependExtensionInterface
----------------------------------------------------
diff --git a/cache.rst b/cache.rst
index 9982c33a7cf..73766284f21 100644
--- a/cache.rst
+++ b/cache.rst
@@ -77,10 +77,11 @@ adapter (template) they use by using the ``app`` and ``system`` key like:
xsi:schemaLocation="http://symfony.com/schema/dic/services
https://symfony.com/schema/dic/services/services-1.0.xsd
http://symfony.com/schema/dic/symfony
- https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
-
+ https://symfony.com/schema/dic/symfony/symfony-1.0.xsd"
+ >
-
@@ -89,12 +90,16 @@ adapter (template) they use by using the ``app`` and ``system`` key like:
.. code-block:: php
// config/packages/cache.php
- $container->loadFromExtension('framework', [
- 'cache' => [
- 'app' => 'cache.adapter.filesystem',
- 'system' => 'cache.adapter.system',
- ],
- ]);
+ namespace Symfony\Component\DependencyInjection\Loader\Configurator;
+
+ return static function (ContainerConfigurator $container) {
+ $container->extension('framework', [
+ 'cache' => [
+ 'app' => 'cache.adapter.filesystem',
+ 'system' => 'cache.adapter.system',
+ ],
+ ]);
+ };
The Cache component comes with a series of adapters pre-configured:
@@ -140,8 +145,8 @@ will create pools with service IDs that follow the pattern ``cache.[type]``.
xsi:schemaLocation="http://symfony.com/schema/dic/services
https://symfony.com/schema/dic/services/services-1.0.xsd
http://symfony.com/schema/dic/symfony
- https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
-
+ https://symfony.com/schema/dic/symfony/symfony-1.0.xsd"
+ >
+
@@ -368,12 +385,14 @@ with either :class:`Symfony\\Contracts\\Cache\\CacheInterface` or
// config/services.php
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
- return function(ContainerConfigurator $configurator) {
- $services = $configurator->services();
+ return function(ContainerConfigurator $container) {
+ $container->services()
+ // ...
- $services->set('app.cache.adapter.redis')
- ->parent('cache.adapter.redis')
- ->tag('cache.pool', ['namespace' => 'my_custom_namespace']);
+ ->set('app.cache.adapter.redis')
+ ->parent('cache.adapter.redis')
+ ->tag('cache.pool', ['namespace' => 'my_custom_namespace'])
+ ;
};
Custom Provider Options
@@ -415,11 +434,14 @@ and use that when configuring the pool.
xsi:schemaLocation="http://symfony.com/schema/dic/services
https://symfony.com/schema/dic/services/services-1.0.xsd
http://symfony.com/schema/dic/symfony
- https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
-
+ https://symfony.com/schema/dic/symfony/symfony-1.0.xsd"
+ >
-
+
@@ -438,27 +460,34 @@ and use that when configuring the pool.
.. code-block:: php
// config/packages/cache.php
+ namespace Symfony\Component\DependencyInjection\Loader\Configurator;
+
use Symfony\Component\Cache\Adapter\RedisAdapter;
- $container->loadFromExtension('framework', [
- 'cache' => [
- 'pools' => [
- 'cache.my_redis' => [
- 'adapter' => 'cache.adapter.redis',
- 'provider' => 'app.my_custom_redis_provider',
+ return static function (ContainerConfigurator $container) {
+ $container->extension('framework', [
+ 'cache' => [
+ 'pools' => [
+ 'cache.my_redis' => [
+ 'adapter' => 'cache.adapter.redis',
+ 'provider' => 'app.my_custom_redis_provider',
+ ],
],
],
- ],
- ]);
-
- $container->register('app.my_custom_redis_provider', \Redis::class)
- ->setFactory([RedisAdapter::class, 'createConnection'])
- ->addArgument('redis://localhost')
- ->addArgument([
- 'retry_interval' => 2,
- 'timeout' => 10
- ])
- ;
+ ]);
+
+ $container->services()
+ ->set('app.my_custom_redis_provider', \Redis::class)
+ ->factory([RedisAdapter::class, 'createConnection'])
+ ->args([
+ 'redis://localhost',
+ [
+ 'retry_interval' => 2,
+ 'timeout' => 10,
+ ]
+ ])
+ ;
+ };
Creating a Cache Chain
----------------------
@@ -506,11 +535,14 @@ Symfony stores the item automatically in all the missing pools.
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:framework="http://symfony.com/schema/dic/symfony"
xsi:schemaLocation="http://symfony.com/schema/dic/services
- https://symfony.com/schema/dic/services/services-1.0.xsd">
-
+ https://symfony.com/schema/dic/services/services-1.0.xsd
+ http://symfony.com/schema/dic/symfony
+ https://symfony.com/schema/dic/symfony/symfony-1.0.xsd"
+ >
-
+
@@ -522,20 +554,24 @@ Symfony stores the item automatically in all the missing pools.
.. code-block:: php
// config/packages/cache.php
- $container->loadFromExtension('framework', [
- 'cache' => [
- 'pools' => [
- 'my_cache_pool' => [
- 'default_lifetime' => 31536000, // One year
- 'adapters' => [
- 'cache.adapter.array',
- 'cache.adapter.apcu',
- ['name' => 'cache.adapter.redis', 'provider' => 'redis://user:password@example.com'],
+ namespace Symfony\Component\DependencyInjection\Loader\Configurator;
+
+ return static function (ContainerConfigurator $container) {
+ $container->extension('framework', [
+ 'cache' => [
+ 'pools' => [
+ 'my_cache_pool' => [
+ 'default_lifetime' => 31536000, // One year
+ 'adapters' => [
+ 'cache.adapter.array',
+ 'cache.adapter.apcu',
+ ['name' => 'cache.adapter.redis', 'provider' => 'redis://user:password@example.com'],
+ ],
],
],
],
- ],
- ]);
+ ]);
+ };
Using Cache Tags
----------------
@@ -602,11 +638,14 @@ to enable this feature. This could be added by using the following configuration
xsi:schemaLocation="http://symfony.com/schema/dic/services
https://symfony.com/schema/dic/services/services-1.0.xsd
http://symfony.com/schema/dic/symfony
- https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
-
+ https://symfony.com/schema/dic/symfony/symfony-1.0.xsd"
+ >
-
+
@@ -614,16 +653,20 @@ to enable this feature. This could be added by using the following configuration
.. code-block:: php
// config/packages/cache.php
- $container->loadFromExtension('framework', [
- 'cache' => [
- 'pools' => [
- 'my_cache_pool' => [
- 'adapter' => 'cache.adapter.redis',
- 'tags' => true,
+ namespace Symfony\Component\DependencyInjection\Loader\Configurator;
+
+ return static function (ContainerConfigurator $container) {
+ $container->extension('framework', [
+ 'cache' => [
+ 'pools' => [
+ 'my_cache_pool' => [
+ 'adapter' => 'cache.adapter.redis',
+ 'tags' => true,
+ ],
],
],
- ],
- ]);
+ ]);
+ };
Tags are stored in the same pool by default. This is good in most scenarios. But
sometimes it might be better to store the tags in a different pool. That could be
@@ -651,12 +694,17 @@ achieved by specifying the adapter.
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:framework="http://symfony.com/schema/dic/symfony"
xsi:schemaLocation="http://symfony.com/schema/dic/services
- https://symfony.com/schema/dic/services/services-1.0.xsd">
-
+ https://symfony.com/schema/dic/services/services-1.0.xsd
+ http://symfony.com/schema/dic/symfony
+ https://symfony.com/schema/dic/symfony/symfony-1.0.xsd"
+ >
-
-
+
+
@@ -664,19 +712,23 @@ achieved by specifying the adapter.
.. code-block:: php
// config/packages/cache.php
- $container->loadFromExtension('framework', [
- 'cache' => [
- 'pools' => [
- 'my_cache_pool' => [
- 'adapter' => 'cache.adapter.redis',
- 'tags' => 'tag_pool',
- ],
- 'tag_pool' => [
- 'adapter' => 'cache.adapter.apcu',
+ namespace Symfony\Component\DependencyInjection\Loader\Configurator;
+
+ return static function (ContainerConfigurator $container) {
+ $container->extension('framework', [
+ 'cache' => [
+ 'pools' => [
+ 'my_cache_pool' => [
+ 'adapter' => 'cache.adapter.redis',
+ 'tags' => 'tag_pool',
+ ],
+ 'tag_pool' => [
+ 'adapter' => 'cache.adapter.apcu',
+ ],
],
],
- ],
- ]);
+ ]);
+ };
.. note::
diff --git a/components/dependency_injection.rst b/components/dependency_injection.rst
index 486f89e599d..fab46ff3d26 100644
--- a/components/dependency_injection.rst
+++ b/components/dependency_injection.rst
@@ -259,15 +259,16 @@ config files:
newsletter_manager:
class: NewsletterManager
calls:
- - setMailer: ['@mailer']
+ - [setMailer, ['@mailer']]
.. code-block:: xml
-
+ xsi:schemaLocation="http://symfony.com/schema/dic/services
+ https://symfony.com/schema/dic/services/services-1.0.xsd"
+ >
sendmail
@@ -290,24 +291,21 @@ config files:
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
- return function(ContainerConfigurator $configurator) {
- $configurator->parameters()
+ return static function (ContainerConfigurator $container) {
+ $container->parameters()
// ...
->set('mailer.transport', 'sendmail')
;
- $services = $configurator->services();
-
- $services->set('mailer', 'Mailer')
- ->args(['%mailer.transport%'])
- ;
+ $container->services()
+ ->set('mailer', 'Mailer')
+ ->args(['%mailer.transport%'])
- $services->set('newsletter_manager', 'NewsletterManager')
- ->call('setMailer', [ref('mailer')])
+ ->set('newsletter_manager', 'NewsletterManager')
+ ->call('setMailer', [ref('mailer')])
;
};
-
Learn More
----------
diff --git a/components/dependency_injection/_imports-parameters-note.rst.inc b/components/dependency_injection/_imports-parameters-note.rst.inc
index 92868df1985..50c6b736353 100644
--- a/components/dependency_injection/_imports-parameters-note.rst.inc
+++ b/components/dependency_injection/_imports-parameters-note.rst.inc
@@ -19,8 +19,8 @@
-
+ https://symfony.com/schema/dic/services/services-1.0.xsd"
+ >
@@ -29,4 +29,8 @@
.. code-block:: php
// config/services.php
- $loader->import('%kernel.project_dir%/somefile.yaml');
+ namespace Symfony\Component\DependencyInjection\Loader\Configurator;
+
+ return static function (ContainerConfigurator $container) {
+ $container->import('%kernel.project_dir%/somefile.yaml');
+ };
diff --git a/components/dependency_injection/compilation.rst b/components/dependency_injection/compilation.rst
index acf754c0f5d..3f5812529b2 100644
--- a/components/dependency_injection/compilation.rst
+++ b/components/dependency_injection/compilation.rst
@@ -200,13 +200,16 @@ The XML version of the config would then look like this:
-
-
+ xmlns:acme-demo="http://www.example.com/schema/dic/acme_demo"
+ xsi:schemaLocation="http://symfony.com/schema/dic/services
+ https://symfony.com/schema/dic/services/services-1.0.xsd
+ http://www.example.com/schema/dic/acme_demo
+ https://www.example.com/schema/dic/acme_demo/acme_demo-1.0.xsd"
+ >
+
fooValue
barValue
-
+
.. note::
diff --git a/components/http_foundation/session_configuration.rst b/components/http_foundation/session_configuration.rst
index 41aacae0e46..36ca212b006 100644
--- a/components/http_foundation/session_configuration.rst
+++ b/components/http_foundation/session_configuration.rst
@@ -187,21 +187,26 @@ configuration:
xmlns:framework="http://symfony.com/schema/dic/symfony"
xsi:schemaLocation="http://symfony.com/schema/dic/services
https://symfony.com/schema/dic/services/services-1.0.xsd
- http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
-
+ http://symfony.com/schema/dic/symfony
+ https://symfony.com/schema/dic/symfony/symfony-1.0.xsd"
+ >
-
+
.. code-block:: php
// config/packages/framework.php
- $container->loadFromExtension('framework', [
- 'session' => [
- 'gc_probability' => null,
- ],
- ]);
+ namespace Symfony\Component\DependencyInjection\Loader\Configurator;
+
+ return static function (ContainerConfigurator $container) {
+ $container->extension('framework', [
+ 'session' => [
+ 'gc_probability' => null,
+ ],
+ ]);
+ };
You can configure these settings by passing ``gc_probability``, ``gc_divisor``
and ``gc_maxlifetime`` in an array to the constructor of
diff --git a/components/serializer.rst b/components/serializer.rst
index c26cd480134..81707bc5a05 100644
--- a/components/serializer.rst
+++ b/components/serializer.rst
@@ -816,6 +816,8 @@ faster alternative to the
# config/services.yaml
services:
+ # ...
+
get_set_method_normalizer:
class: Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer
tags: [serializer.normalizer]
@@ -827,9 +829,11 @@ faster alternative to the
-
+ https://symfony.com/schema/dic/services/services-1.0.xsd"
+ >
+
+
@@ -843,11 +847,11 @@ faster alternative to the
use Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer;
- return function(ContainerConfigurator $configurator) {
- $services = $configurator->services();
-
- $services->set('get_set_method_normalizer', GetSetMethodNormalizer::class)
- ->tag('serializer.normalizer')
+ return static function (ContainerConfigurator $container) {
+ $container->services()
+ // ...
+ ->set('get_set_method_normalizer', GetSetMethodNormalizer::class)
+ ->tag('serializer.normalizer')
;
};
diff --git a/components/var_dumper.rst b/components/var_dumper.rst
index a607ddeb59b..1202791b97c 100644
--- a/components/var_dumper.rst
+++ b/components/var_dumper.rst
@@ -131,22 +131,27 @@ the :ref:`dump_destination option ` of the
-
-
+ http://symfony.com/schema/dic/debug
+ https://symfony.com/schema/dic/debug/debug-1.0.xsd"
+ >
.. code-block:: php
// config/packages/debug.php
- $container->loadFromExtension('debug', [
- 'dump_destination' => 'tcp://%env(VAR_DUMPER_SERVER)%',
- ]);
+ namespace Symfony\Component\DependencyInjection\Loader\Configurator;
+
+ return static function (ContainerConfigurator $container) {
+ $container->extension('debug', [
+ 'dump_destination' => 'tcp://%env(VAR_DUMPER_SERVER)%',
+ ]);
+ };
Outside a Symfony application, use the :class:`Symfony\\Component\\VarDumper\\Dumper\\ServerDumper` class::