filmov
tv
Symfony6 et Symfony 7 Techwall #52 Les Service Envoi de mail via le bundle Mailer et Gmail

Показать описание
Symfony6 et Symfony 7 Techwall #52 Les Service Envoi de mail via le bundle Mailer
Dans ses anciennes versions, Symfony utilise SwiftMailer pour l’envoi d’email.
Si vous n’avez pas le bundle installer le : composer require symfony/swiftmailer-bundle
Si vous utiliser Gmail voici la configuration requise :
SwiftMailer sera dépricated à partir de la version 6 de Symfony, l’alternative est symfony mailer
Si vous n’avez pas le bundle installer le : composer require symfony/mailer
Installer ensuite le mailer que vous voulez utiliser : composer require symfony/google-mailer
Si vous utiliser Gmail voici la configuration requise :
L’injection des services dans les différentes classes de votre projet se fait à travers l’injection de dépendances. En effet, vous êtes entrain de travailler avec un principe très important et qui permet de minimiser les dépendances entre les classes. Ici l’instanciation n’est plus votre soucis. C’est le conteneur de service qui s’occupe de tout.
L’injection de dépendance est un patron de conception qui a vu le jour afin de palier à un problème très récurent : Avoir dans son code des classes qui dépendent les unes des autres. L’injection de dépendance palie à ce problème en découplant les classes.
Avec le conteneur de service de Symfony on peut injecter des services ou des paramètres.
Lorsque vous travaillez avec Symfony, vous aurez besoin d’une même fonctionnalité à plusieurs endroits différents. Vous aurez par exemple besoin d’accéder à votre base de données dans plusieurs contrôleurs.
Un Service est une classe simple qui fournit un « Service ». Vous avez déjà utilisé plusieurs services tel que Doctrine. Elle doit être accessible partout dans votre code.
Dans Symfony tous les services sont géré par le conteneur de service « Symfony container ».
L’un des principes de base sur lequel se base la notion de Service est le principe de Responsabilité unique. Ce principe fait parti des principes SOLID de l’orienté objet. Faite une recherche sur ces concepts. Pour le premier principe de « Single Responsability » il implique que votre code au sein d'une classe ne doit avoir qu'une seule responsabilité.
Prenons l’exemple du service mailer qui se charge de l’envoi de mail, donc un seul type de tâche à effectuer.
Dans le cas ou votre service se charge de 2 tâches différentes, pensez à diviser votre classe en deux services différents.
Les services de Symfony suivent l’architecture Orientées Service
L’utilisation des services et du principe de Single Responsability permet d’avoir un code réutilisable et facilement maintenable.
Un service est une classe associée à une configuration. Si on utilise plusieurs services et qu’on doit tout gérer, l’utilisation des services deviendrait un peu pénible. C’est pour cela que Symfony nous fournit un conteneur de service.
Un conteneur de service est un objet qui a pour rôle de gérer l’ensemble des services de votre application. C’est lui qui vous permettra d’accéder à vos services. Si vous avez besoin d’utiliser un service vous devez passer par le conteneur.
Cependant le rôle du conteneur n’est pas simplement de fournir les services mais aussi de les préparer. En effet, c’est lui qui va préparer l’objet en l’instanciant et en instanciant toutes les classes dont dépend votre service.
Tous les services ne sont pas instanciés à chaque requête. En effet, le conteneur est paresseux il utilise le lazy loading afin d’assurer une plus grande vitesse d’exécution : il n'instancie pas un service avant que vous le demandiez. Par exemple, si vous n'utilisez jamais le service de mailing lors d'une requête, le conteneur ne l'instanciera jamais.
Lors de la demande d’un service S1, le conteneur suit le workflow suivant :
Vérifie si la classe S1 est déjà instancié.
Si oui la fournir
Sinon
Vérifier si le service dépend d’autres classes.
Si oui les instancier ou les récupérer si elles sont instanciées
Instancier le service
L’injection des services dans les différentes classes de votre projet se fait à travers l’injection de dépendances. En effet, vous êtes entrain de travailler avec un principe très important et qui permet de minimiser les dépendances entre les classes. Ici l’instanciation n’est plus votre soucis. C’est le conteneur de service qui s’occupe de tout.
Dans ses anciennes versions, Symfony utilise SwiftMailer pour l’envoi d’email.
Si vous n’avez pas le bundle installer le : composer require symfony/swiftmailer-bundle
Si vous utiliser Gmail voici la configuration requise :
SwiftMailer sera dépricated à partir de la version 6 de Symfony, l’alternative est symfony mailer
Si vous n’avez pas le bundle installer le : composer require symfony/mailer
Installer ensuite le mailer que vous voulez utiliser : composer require symfony/google-mailer
Si vous utiliser Gmail voici la configuration requise :
L’injection des services dans les différentes classes de votre projet se fait à travers l’injection de dépendances. En effet, vous êtes entrain de travailler avec un principe très important et qui permet de minimiser les dépendances entre les classes. Ici l’instanciation n’est plus votre soucis. C’est le conteneur de service qui s’occupe de tout.
L’injection de dépendance est un patron de conception qui a vu le jour afin de palier à un problème très récurent : Avoir dans son code des classes qui dépendent les unes des autres. L’injection de dépendance palie à ce problème en découplant les classes.
Avec le conteneur de service de Symfony on peut injecter des services ou des paramètres.
Lorsque vous travaillez avec Symfony, vous aurez besoin d’une même fonctionnalité à plusieurs endroits différents. Vous aurez par exemple besoin d’accéder à votre base de données dans plusieurs contrôleurs.
Un Service est une classe simple qui fournit un « Service ». Vous avez déjà utilisé plusieurs services tel que Doctrine. Elle doit être accessible partout dans votre code.
Dans Symfony tous les services sont géré par le conteneur de service « Symfony container ».
L’un des principes de base sur lequel se base la notion de Service est le principe de Responsabilité unique. Ce principe fait parti des principes SOLID de l’orienté objet. Faite une recherche sur ces concepts. Pour le premier principe de « Single Responsability » il implique que votre code au sein d'une classe ne doit avoir qu'une seule responsabilité.
Prenons l’exemple du service mailer qui se charge de l’envoi de mail, donc un seul type de tâche à effectuer.
Dans le cas ou votre service se charge de 2 tâches différentes, pensez à diviser votre classe en deux services différents.
Les services de Symfony suivent l’architecture Orientées Service
L’utilisation des services et du principe de Single Responsability permet d’avoir un code réutilisable et facilement maintenable.
Un service est une classe associée à une configuration. Si on utilise plusieurs services et qu’on doit tout gérer, l’utilisation des services deviendrait un peu pénible. C’est pour cela que Symfony nous fournit un conteneur de service.
Un conteneur de service est un objet qui a pour rôle de gérer l’ensemble des services de votre application. C’est lui qui vous permettra d’accéder à vos services. Si vous avez besoin d’utiliser un service vous devez passer par le conteneur.
Cependant le rôle du conteneur n’est pas simplement de fournir les services mais aussi de les préparer. En effet, c’est lui qui va préparer l’objet en l’instanciant et en instanciant toutes les classes dont dépend votre service.
Tous les services ne sont pas instanciés à chaque requête. En effet, le conteneur est paresseux il utilise le lazy loading afin d’assurer une plus grande vitesse d’exécution : il n'instancie pas un service avant que vous le demandiez. Par exemple, si vous n'utilisez jamais le service de mailing lors d'une requête, le conteneur ne l'instanciera jamais.
Lors de la demande d’un service S1, le conteneur suit le workflow suivant :
Vérifie si la classe S1 est déjà instancié.
Si oui la fournir
Sinon
Vérifier si le service dépend d’autres classes.
Si oui les instancier ou les récupérer si elles sont instanciées
Instancier le service
L’injection des services dans les différentes classes de votre projet se fait à travers l’injection de dépendances. En effet, vous êtes entrain de travailler avec un principe très important et qui permet de minimiser les dépendances entre les classes. Ici l’instanciation n’est plus votre soucis. C’est le conteneur de service qui s’occupe de tout.
Комментарии