Détails du sujet

Symfony 3 [Quiz 2] [Pile 2]

Composer, CLI, Autoload, Services dans le FrameWork Symfony 3

Toutes les cartes

Avant de lancer Composer, quel fichier doit-on compléter et avec quelles informations?

  1. Le fichier composer.json situé à la racine du projet
  2. Ajouter le nom des librairies à installer ou à updater
  3. Ajouter la version des librairies souhaitées

Quel est le nom du fichier qu'on exécute pour utiliser Composer?

composer.phar

Placé de préférence à la racine du projet


Quel logiciel indispensable faut-il installer pour permettre à Composer de gérer les versions des dépendances?

Git

Logiciel de gestion de versions décentralisé créé par Linus Torvalds


En ligne de commande

Comment télécharger l'Installeur de Composer et l'exécuter afin qu'au final on obtienne le fichier composer.phar?


En ligne de commande

Comment vérifier la version de Composer?

>php composer.phar -version


En ligne de commande

Comment mettre à jour Composer?

 >php composer.phar selfupdate

ou

>php composer.phar self-update


Qu'est ce que msysgit?

C'est un logiciel pour Windows à installer avec Composer qui regroupe

  1. msys - un émulateur de commandes Unix
  2. Git - un logiciel de gestion de versions
  • On le trouve au lien suivant https://git-for-windows.github.io/

En ligne de commande

Comment vérifier la version de Git?

>git version


Dans quel répertoire Composer installera ou updatera une librairie?

  • vendor

Ce répertoire est situé au même niveau que le fichier composer.phar


contenu du fichier composer.json

Commentez ces lignes

Ce tableau JSON est le minimum pour préciser à Composer ce qu'il doit faire.

  1. Installer ou updater Twig
  2. prendre la version la plus récente dans la branche 1.* ce qui équivaut à une version >= 1.0 et  < 2

En ligne de commande

Comment installer ou updater nos librairies avec Composer?

  • >php composer.phar update

ou

  • >php composer.phar update --no-plugins --no-scripts

si l'on souhaite éviter l'exécution éventuelle des scripts et des plugins de tiers personnes malveillantes.


Que fait Composer lors d'une commande:

>php composer.phar update

  1. Installe ou met à jour les librairies définies dans composer.json
  2. Considère uniquement les versions demandées dans composer.json
  3. Crée un fichier autoload.php dans vendor que Symfony utilisera pour l'autoload

Pour l'autoload

Quel fichier de Symfony charge le fichier \vendor\autoload.php généré par Composer?

\app\autoload.php


Quelles étapes respecter pour installer un bundle avec Composer?

  1. Trouver le nom du Bundle
  2. Déterminer la version du Bundle souhaitée
  3. Déclarer le Bundle à Composer dans composer.json
  4. lancer >php composer.phar update
  5. Déclarer le Bundle dans le Kernel app/AppKernel.php

Quel site internet regroupe les librairies que Composer utilise?

https://packagist.org/


Quel est le site officiel de Composer?

https://getcomposer.org


Quelle est la différence entre ces deux sites?

  1. https://getcomposer.org
  2. https://packagist.org/
  1. composer.org est le site officiel de Composer
  2. packagist.org est le site qui regroupe les librairies que Composer utilise

Dans quelle section du fichier composer.json doit-on mettre le nom de nos Bundles référencés pour les télécharger ou les updater?

Dans la section 'require'

Que faisons-nous dans ce fichier?

On indique au Kernel le nom du Bundle que l'on souhaite utiliser en mode développement ou test.


Dans quel fichier de Symfony déclare-t-on nos Bundles?

app/AppKernel.php


Que faire si l'on souhaite ajouter manuellement un Bundle non référencé mais qui respecte la PSR-4, de manière que Composer s'occupe uniquement de l'ajouter à l'autoload mais ne s'occupe pas des updates?

Ajouter le Bundle en ligne 9, section 'autoload', fichier composer.json

En ligne de commande

Comment mettre à jour l'autoload aprés un ajout manuel de Bundle non référencé dans composer.json?

>php composer.php dump-autoload


Peut-on modifier nous-même les fichiers d'autoload de composer situé dans vendor/composer/?

 

Non, jamais.

Il faut laisser Composer changer le contenu de ses fichiers situés dans

vendor/composer/


Composer fait-il partie de Symfony?

Non, mais il est trés utilisé pour gérer facilement les dépendances de notre application.


Qu'est-ce qu'un service?

Un service est une classe associée à une configuration qui a pour vocation d'être accessible partout dans notre application.


Les services sont-ils utilisés par le coeur de Symfony?

Oui


Quel est l'intérêt des services?

  1. Utilisables partout dans notre application.
  2. Découpent notre application en plusieurs services.
  3. Simplifient le développement d'un service car un service correspond à une fonction.
  4. Réutilisables, faciles à tester et à configurer
  5. Evitent l'emploi abusif et à mauvais escient du Design Pattern Singleton (Méthode Statique appelable partout)

Vrai ou Faux

Savoir créer et utiliser les services c'est utiliser Symfony au mieux de ses capacités?

Vrai


Le FrameWork Symfony est-il basé sur une architecture SOA?

 Oui

SOA = Service Oriented Architecture


Qu'est-ce qu'un conteneur de service?

C'est une classe qui gère les services

Il contient les services qu'on a enregistrés et les fournit facilement avec leurs dépendances


Un service a-t-il un nom et une classe associée?

Oui


Dans un contrôleur qui hérite du contrôleur de base

Comment appeler un service avec une méthode raccourcie et avec l'attribut $container?

  • $this->get('nom_du_service')

ou

  • $this->container->get('nom_du_service')

Dans quel fichier enregistrer un service?

services.yml

situé dans le répertoire /config de l'application ou du Bundle

 


Pourquoi enregistrer un service dans un fichier de configuration?

Pour que Symfony enregistre le service dans le container de service.


Pour utiliser un service par qui doit-on passé obligatoirement?

Le  Container de Service


Le container de service s'assure-t-il que l'application ne contienne qu'une instance de la classe associée au service appelé?

Oui

C'est la même instance de la classe, le même objet qui est utilsé partout dans l'application

On parle de PARTAGE de service


Comment définir les dépendances d'un service A ?

Définir dans services.yml
  • Nom du service A
  • FQCN de la classe du service A
  • Nom du service B dont A a besoin

FQCN (Fully Qualified Class Name) = espace de nom complet


Lors de la configuration d'un service peut-on lui ajouter un argument?

Dans services.yml

Oui

Cet argument peut être:

  • Un paramètre
  • Un service dont il a besoin (une dépendance)

En ligne de commande

Comment voir la liste des services disponibles?

>php bin/console debug:container


Cette classe pourrait-elle convenir pour devenir un service?

Oui, elle ne fait rien pour l'instant mais c'est le minimum requis pour la déclarer comme service dans services.yml

  • Namespace
  • Nom  de classe = Nom du fichier

Dans services.yml

Que faisons-nous dans ce fichier?

Nous déclarons un service afin que Symfony l'enregistre dans le container de service

  • Nom du service = oc_platform.antispam
  • L'Espace de nom complet de la classe = 0C\PlatformBundle\Antispam\OCAntispam

Dans un contrôleur qui hérite du contrôleur de base

Comment récupérer les paramètres configurés dans

  • services.yml
  • parameters.yml

 

$this->getParameter('nom_du_paramètre')

ou

$container->getParameter('nom_du_paramètre')


Dans services.yml

Quand on enregistre une classe comme un service, doit-on renseigner l'extension .php de la  classe?

Non, on n'écrit pas OCAntispam.php car on renseigne l'espace de nom complet de la classe (FQCN)


Best Practice

Recommande-t-on de choisir un nom de service unique aussi cours que possible?

Oui

On peut pour le rendre unique le précéder du nom du bundle


Dans notre application

Où peut-on écrire une classe que l'on souhaite transformer en service?

N'importe où dans /scr du moment qu'elle possède un namespace qui correspond on dossier où elle se trouve.

Mais en générale on la met dans un Bundle qui lui est propre.


Que peut contenir le container de Symfony?

Dans services.yml
  • Des services (des classes)
  • Des paramètres (des variables)

Commentez ce Contrôleur
Utilisation de service

On récupère le service say_hello du container de service

On lance la méthode say() du service

On passe au template la variable que nous a renvoyée le service

On retourne une réponse qui contient le template

 

 


Qu'est-ce que le FQCN que l'on utilise pour configurer une classe comme service dans le fichier service.yml?

Ligne 5

C'est l'espace de nom complet de la classe appelée en Anglais Fully Qualified Class Name


Dans services.yml

Lors de la déclaration d'une classe comme service, quels sont les 3 types d'arguments que l'on peut utilser?

  • 7. Un service le mettre entre guillemets et le préfixer de @
  • 8. Un paramètre entouré de %
  • 9. Une valeur normale en YAML (booléen, chaine de caractères, nombre etc...)

Humour

Qu'est-ce que l'Informatique?

C'est l'art de passer 15 jours à essayer de gagner quelques millisecondes.