# yaml-language-server: $schema=../vendor/symfony/dependency-injection/Loader/schema/services.schema.json

# ══════════════════════════════════════════════════════════════════
# Conteneur de services — services.yaml
# ══════════════════════════════════════════════════════════════════
# Point d'entrée de la configuration du conteneur d'injection
# de dépendances (DI) Symfony.
#
# Grâce à l'autowiring et à l'autoconfiguration activés par défaut,
# il n'est pas nécessaire de déclarer manuellement les services :
# toutes les classes de src/ sont automatiquement enregistrées.
#
# Quand ajouter une déclaration explicite ici ?
#   - Passer un argument scalaire (ex: une clé API, un chemin)
#   - Nommer un service alias
#   - Décorer/remplacer un service existant
#   - Configurer un service tiers non autowirable
#
# Paramètres applicatifs (section `parameters`) :
#   Placer ici les valeurs qui changent selon l'environnement
#   et les référencer via '%nom_param%' dans le code ou le YAML.
# ══════════════════════════════════════════════════════════════════

services:
    # ── Valeurs par défaut pour tous les services de ce fichier ────
    _defaults:
        autowire: true      # Injecte automatiquement les dépendances via le type-hint
        autoconfigure: true # Enregistre automatiquement les commandes, subscribers, etc.

    # ── Enregistrement automatique de toutes les classes src/ ──────
    # Crée un service par classe ; l'ID du service est le FQCN.
    # Les classes abstraites et interfaces sont exclues automatiquement.
    App\:
        resource: '../src/'

    # ── Définitions explicites (si nécessaire) ─────────────────────
    # Ajouter ici les services nécessitant une configuration manuelle.
    # Rappel : les définitions déclarées ici remplacent celles
    # issues de l'enregistrement automatique ci-dessus.

parameters:
    app.vapid_public_key: '%env(VAPID_PUBLIC_KEY)%'
    app.vapid_private_key: '%env(VAPID_PRIVATE_KEY)%'
    app.vapid_subject: '%env(VAPID_SUBJECT)%'
