Modèle YAML pour créer un service Symfony d'itérateur tagué

Publié le 06/01/2023 • Mis à jour le 06/01/2023


English language detected! 🇬🇧

  We noticed that your browser is using English. Do you want to read this post in this language?

Read the english version 🇬🇧 Close

Ce bout de code fournit un modèle YAML pour créer un service Symfony d'itérateur tagué (tagged itertor) :
1. On active l'autowiring et l'auto configuration.
2. On déclare vouloir assigner le tag app.email à tous les services implémentant l'interface EmailInterface.
3. On charge tous les services implémentant l'interface EmailInterface à partir d'un répertoire donné.
4. On injecte tous ces services tagués app.email dans le service EmailCollection.
5. Désormais, on peut utiliser le service EmailCollection dans les autres services grâce à l'autowiring.


services:
    # 1.
    _defaults:
        autowire: true
        autoconfigure: true

    # 2.
    _instanceof:
        App\Mailer\Email\EmailInterface:
            tags: ['app.email']

    # 3.
    App\Mailer\Email\:
        resource: '../../src/Mailer/Email/'

    # 4.
    App\Mailer\EmailCollection:
        arguments:
            - !tagged_iterator app.email

    # 5.
    App\Mailer\AppMailer: ~
        #arguments:
            #- App\Mailer\EmailCollection

 Plus sur Stackoverflow   Lire la doc  Snippet aléatoire