← Tous les articles

Services : utilisation des paramètres et injections d’autres services

Plutôt que d’injecter le container dans un service il est plus pertinent d’injecter seulement les services dont on a besoin.

Déclarer le service

Dans le fichier services.yml du bundle de notre service on a :

parameters:
    neodsi_validation.class: Neodsi\MetierBundle\Lib\Validation

services:
   neodsi_service_validation:
        class: "%neodsi_validation.class%"
        arguments: [@translator, %url%, @neodsi_service_helper]

Le service neodsi_service_validation est déclaré avec la classe dont le nom est indiqué dans le paramètre neodsi_validation.class

Il prend comme argument :

Le service neodsi_service_helper est un service qui peut être déclaré dans ce fichier services.yml ou dans un autre bundle.

Utiliser les arguments dans la classe

Il suffit ensuite dans le constructeur du service d’indiquer les arguments

public function __construct($translator, $url, $oHelper)

 On peut mettre les noms de variables que l’on veut et éventuellement indiquer le type d’objet avant la variable (par exemple Translator devant $translator).

Services que l’on peut injecter

Parmi les services de symfony utile on peut citer :

 

PM
Patrick MUCCI — neoDSI

Problem solver & builder basé à Lyon, mobile à Paris, Marseille & Toulouse. Je transforme des problématiques complexes en produits concrets — du MVP au scaling. Ouvert au CDI & au freelance.