New in Symfony 6.1: Service Autowiring Attributes

Contributed by Kevin Bond in #45657 and #45783.

PHP attributes are arguably one of the new PHP features with more positive impact on how we develop applications. Attributes add structured, machine-readable metadata information in code. In Symfony we added support for them in: New in Symfony 5.2: Routing PHP attributes New in Symfony 5.2: Constraints as PHP attributes New in Symfony 5.2: Controller argument attributes New in Symfony 5.3: Service Autoconfiguration attributes New in Symfony 5.3: Autowiring Iterators/Locators and Aliases with Attributes New in Symfony 6.1: Service Decoration Attributes In Symfony 6.1 we're introducing another feature related to attributes so you can configure service autowiring with PHP attributes. In practice, this means that you can optionally not add any YAML/XML/PHP service configuration in config/ and configure your services directly in your code stored in src/. To do so, use the new #[Autowire] attribute in the constructor arguments of your services (or in the arguments of any controller method):

    use Symfony\Component\DependencyInjection\Attribute\Autowire;

class MyService { public function __construct(

[Autowire(service: 'some_service')]

    private $service1,

    #[Autowire(expression: 'service("App\\Mail\\MailerConfiguration").getMailerMethod()')
    private $service2,

    #[Autowire(value: '%env(json:file:resolve:AUTH_FILE)%')]
    private $parameter1,

    #[Autowire(value: '%kernel.project_dir%/config/dir')]
    private $parameter2,
) {}

// ...

}

In addition to the named arguments (service:, expression:, value:) you can also use the well-known service syntax used in Symfony's YAML config (@ for services and @= for expressions):

    use Symfony\Component\DependencyInjection\Attribute\Autowire;

class MyService { public function __construct(

[Autowire('@some_service')]

    private $service1,

    #[Autowire('@=service("App\\Mail\\MailerConfiguration").getMailerMethod()')
    private $service2,

    #[Autowire('%env(json:file:resolve:AUTH_FILE)%')]
    private $parameter1,
) {}

// ...

}

                Sponsor the Symfony project.

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

Created 3y | May 3, 2022, 8:20:10 AM


Login to add comment

Other posts in this group

Symfony 7.3.0-BETA2 released

Symfony 7.3.0-BETA2 has just been released. This is a pre-release version of Symfony 7.3. If you want to test it in your own applications before its final release, run the following commands:

May 10, 2025, 1:10:15 PM | Symfony
New in Symfony 7.3: Mailer Security Improvements

The Symfony Mailer component provides many security-related features like signing and encrypting email messages. In Symfony 7.3 we're pushing those features even further to give you greater control an

May 9, 2025, 9:20:10 AM | Symfony
SymfonyOnline June 2025: Detect Hidden Defects: Check Your PHP Tests

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

May 8, 2025, 2:40:19 PM | Symfony
New in Symfony 7.3: JsonPath Component

Contributed by Alexandre Daubois in

May 8, 2025, 10:10:10 AM | Symfony
SymfonyOnline June 2025: Combining Turbo, LiveComponent & Stimulus... the Right Way?

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

May 7, 2025, 1:10:15 PM | Symfony
New in Symfony 7.3: New and Improved Console Helpers

Symfony 7.3 introduces powerful improvements to the Console component, beyond the much-anticipated invokable commands and input attributes. This version also brings new helpers and features designed t

May 7, 2025, 8:30:04 AM | Symfony
New in Symfony 7.3: Static Error Pages

Contributed by Loick Piera in

May 6, 2025, 9:20:10 AM | Symfony