Sommaire

Notion de service

Votre application regorge de multiples objets utiles. Par exemple, l’objet « Mailer » vous permet d’envoyer des mails, un autre objet vous permet de stocker des éléments en base de données, etc.

À chaque utilisation de ces classes récurrentes, vous êtes obligé d’instancier les classes.

Il existe une « super » classe dans Symfony qui s’appelle le conteneur de service (service container). Son rôle est de s’occuper de l’instanciation des classes que vous souhaitez en amont de l’exécution de l’application. Il fait tout à votre place !

Non seulement il vous permettra d’instancier automatiquement les classes, mais il instanciera également leurs dépendances. Par exemple, imaginons une classe NewsletterManager qui gère les newsletters. Cette classe va utiliser la classe Mailer pour envoyer les newsletters.

Si on déclare la classe NewsletterManager en tant que service, le conteneur de service instanciera cette classe, ainsi que la classe Mailer pour lui permettre de fonctionner.

Un autre avantage du conteneur de service est qu’il n’instancie la classe qu’une seule fois.

Si vous réutilisez un service que vous avez déjà utilisé, il vous redonnera l’instance de l’objet déjà créé.

Vous voyez donc certainement l’intérêt d’utiliser le conteneur de service, tout ...