New in Symfony 6.1: Expressions as Service Factories

Contributed by Nicolas Grekas in #45512.

The service container provided by the DependencyInjection component allows you to configure the creation of objects. However, sometimes you need to apply the factory design pattern to delegate the object creation to some special object called "the factory". In Symfony 6.1 we're improving the service container to allow you to use expressions as service factories. This can help you in advanced cases such as selecting the factory based on the value of an environment variable. The syntax to use depends on the configuration format: in YAML: factory: '@=service("foo").bar()' in XML: in PHP: ->factory(expr('service("foo").bar()')) The following example shows how to select the factory to use based on the value of a configuration parameter:

    # config/services.yaml

services: App\Mailer: factory: "@=parameter('some_param') ? service('some_service') : arg(0)" arguments:

  • '@some_other_service'

The arg() function returns the value of arguments passed to the factory (e.g. arg(0) returns the first argument, arg(1) returns the second argument, etc.)

                Sponsor the Symfony project.

https://symfony.com/blog/new-in-symfony-6-1-expressions-as-service-factories?utm_source=Symfony%20Blog%20Feed&utm_medium=feed

Vytvořeno 3y | 10. 5. 2022 11:20:07


Chcete-li přidat komentář, přihlaste se

Ostatní příspěvky v této skupině

New in Symfony 7.3: Global Translation Parameters

Contributed by Hubert Lenoir in

24. 4. 2025 7:30:24 | Symfony
SymfonyOnline June 2025: FormFlow: Build Stunning Multistep Forms

SymfonyOnline June 2025 is almost here, starting in almost 2 months on:

June 10-11: Workshop days. It is possible to attend 1 two-day training or 2 one-day trainings. June 12-13: Online confe

23. 4. 2025 15:20:21 | Symfony
New in Symfony 7.3: Assets Pre-Compression

Contributed by Kévin Dunglas in

23. 4. 2025 8:20:31 | Symfony
SymfonyOnline June 2025: Inside a Financial App Breach: Debugging a Million-Dollar Bug

SymfonyOnline June 2025 is almost here, starting in almost 2 months on:

June 10-11: Workshop days. It is possible to attend 1 two-day training or 2 one-day trainings. June 12-13: Online confe

22. 4. 2025 13:50:03 | Symfony
New in Symfony 7.3: Invokable Commands and Input Attributes

This is the first article in a series showcasing the most important new features introduced by Symfony 7.3, which will be released at the end of May 2025.

22. 4. 2025 9:10:36 | Symfony
A Week of Symfony #955 (April 14–20, 2025)

This week, the upcoming Symfony 7.3 version improved the AsAlias attribute by adding a new argument, introduced Clock support for UriSigner, and refined the return type of the ContainerInterface::get(

20. 4. 2025 8:30:06 | Symfony
SymfonyOnline June 2025: Rethinking File Handling in Symfony

SymfonyOnline June 2025 is almost here, starting in almost 2 months on:

June 10-11: Workshop days. It is possible to attend 1 two-day training or 2 one-day trainings. June 12-13: Online confe

16. 4. 2025 16:30:02 | Symfony