Services et Evénements dans le FrameWork Symfony 3
Quel est l'ID du service qui nous donne accés au noyau de Symfony et qui nous permet par exemple de localiser les bundles ou de récupérer le chemin de base du site?
kernel
Quel est l'ID du service (son alias) qui nous donne accés au gestionnaire d'évènements de Symfony?
event_dispatcher
Quel est l'ID du service qui gère les logs de notre application?
logger
Quel est l'ID du service qui nous donne accés au moteur de template de Symfony?
templating
Qu'est-ce qu'un tag?
Un tag est un petit mot que l'on appose à un ou plusieurs services afin que le conteneur de services les identifie comme tels.
Les tags nous permettent-ils d'étendre les fonctionnalités des classes de base de Symfony sans en modifier le code?
Oui
Quel est le tag et l'interface q'un service doit utiliser pour ajouter des extensions à Twig?
A quoi cela sert-il de tager un service avec le tag twig_extension?
Cela permet à Twig de charger les services tagués avec twig_extension qui définissent des fonctions supplémentaires.
Peut-on associer plusieurs tags à un service?
Oui
Que doit faire le plus souvent un service tagué pour que son comportement soit reconnu par celui qui le récupère?
Le service doit le plus souvent mais pas toujours, implémenter une interface ou étendre une classe.
Ainsi celui qui récupère le service tagué va exécuter telle ou telle méthode de ce service.
Quelle commande CLI (Commande Line Interface) nous permet de connaître tous les services tagués avec le tag 'twig.extension'?
>php bin/console debug:container --tag=twig.extension
Citez quelques tags prédéfinis employés dans Symfony?
Quelles sont les étapes qui permettent d'étendre les fonctionnalités de base d'une classe X de Symfony avec un service tagué?
Quelle est l'utilité du tag form.type?
Permet la création de nos propre Type de champ de formulaire
Quelle est l'utilité du tag twig.extension?
Permet d'enregistrer nos propres extensions Twig
Qu'est-ce que les dépendances optionnelles?
Ce sont des dépendances qui sont ajoutées au service via un appel aux méthodes du service aprés l'exécution de son constructeur.
Dans quel cas sommes-nous amenés à utiliser l'appel de méthode (setter injection) pour injecter une dépendance optionnelle à un service?
Quand on sait que la valeur de cette dépendance peut changer durant l'exécution de l'application.
Oui
Quel est le nom de l'éditeur de texte HTML WYSIWYG Open Source qui simplifie la création du contenu web?
Cet éditeur qui commence par 'CK' peut être utilisé pour transformer nos champs ''textarea'' de formulaires en WYSIWYG
CkEditor
Quel est l'ID du service qui permet notamment de récupérer l'utilisateur courant?
security.token_storage
Est-il recommandé de connaître par coeur le noms des services les plus utilisés de Symfony?
Oui
Citez les services les plus courants de Symfony
Qu'est-ce qu'un événement?
Un événement correspond à un moment clé durant l'exécution de l'application Symfony.
Comment s'appel en français et en anglais un service qui écoute un événement?
Quelles sont les étapes pour qu'un service devienne un écouteur et que le gestionnaire d'événement l'exécute quand l'événement survient?
Quel est l'inconvenient d'ajouter une classe écouteuse au gestionnaire d'événements de la manière suivante?
$this->get('event_dispatcher')->addListener('kernel.response', array(NomClasse, 'MethodeDeLaClasse')
Il faut espérer que l'événement ne se soit pas produit avant que ce code s'exécute car on le raterait.
C'est la raison pour laquelle on n'enregistre rarement une classe écouteuse de cette manière
Que définir dans le fichier services.yml pour qu'une classe soit un service écouteur d'un événement du gestionnaire d'événement?
Quelles sont les deux manières de présenter une classe écouteuse d'événements au gestionnaire d'événement?
Un service = Plusieurs fonctions
ou
Un service = Une fonction
Un service = Une fonction
Quand un événement se déclenche, quel argument est donné par le gestionnaire d'événements Kernel.event_listener à la classe écouteuse d'un de ses événements?
Une classe écouteuse peut-elle décider si elle doit ou non lancer un service lors d'un événement et lui passer des arguments?
Oui
En développement, si on utilise le serveur interne de Symfony, pour lancer notre application on entre dans le browser localhost:8000 au lieu d'entrer localhost/NomDeNotreRépertoire/web/app_dev.php
Vrai
Quand on établit une réponse pour l'événement kernel.view la propagation est stoppée.
Qu'est-ce que cela signifie?
Cela signifie que les écouteurs (listeners) avec une priorité moindre ne seront pas exécutés.
Citez quelques événements du ''kernel'' liés à la sécurité
Lorsque l'on souhaite retourner au client une vue indiquant que notre site est en maintenance, qu'elle évenement du kernel utilise-t-on souvent pour faire cela?
kernel.request
Losque l'on souhaite compter le nombre de mauvais login pour intedire ensuite l'accés au site, quel événement du ''kernel'' peut-on utiliser pour faire cela?
securiy.authentication.failure
Peut-on créer nos propres événements?
Oui
Peut-on définir l'ordre d'exécution des écouteurs (listeners)?
Oui