5.9 KiB
TPn - Installation et découverte de Symfony
Objectif
Les objectifs de ce TP sont :
- D'apprendre à installer
Composer
etSymfony
; - A configurer un projet
Symfony
; - A utiliser
Composer
pour la gestion des dépendances ; - A explorer les commandes de la console
Symfony
pour le débogage ; - Réaliser une première application minimaliste en
Symfony
- Et la tester avec PHPUnit.
Consignes
- Durée : 2 heures
- Tous vos projets
Symfony
sont à placer votre dossier~/public_html
. - Utilisez le serveur
londres.uca.local
pour tester vos pages et non la commandesymfony server:start
.
Installation de Composer et Symfony
- Assurez vous que
~/.local/bin
est dans votre variable d'environnement$PATH
. - Installation de
Composer
:
# Télécharger Composer
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
# Vérifier l'installateur
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo 'Installateur vérifié'; } else { echo 'Installateur corrompu'; unlink('composer-setup.php'); } echo PHP_EOL;"
# Installer Composer
php composer-setup.php
# Supprimer l'installateur
php -r "unlink('composer-setup.php');"
# Déplacer Composer dans votre $PATH
mv composer.phar ~/.local/bin/composer
- Installation de
Symfony
:
# Télécharger et installer `Symfony`
curl -sS https://get.symfony.com/cli/installer | bash
# Déplacer `Symfony` dans votre $PATH
mv ~/.symfony5/bin/symfony ~/.local/bin/symfony
# Vérifiez que votre PC a les dépendances requises par `Symfony`
symfony check:requirements
Création de votre premier projet Symfony
- Placez vous dans le dossier
~/public_html
et créez votre premier projetSymfony
:
symfony new --webapp tp1
- Rendez-vous sur la page
http://londres.uca.local/~VOTRE_USERNAME/tp1/public/index.php
. Que constatez-vous ?
- L'utilisateur UNIX
www-data
qui fait tourner le serveur Apache sur le server Londres n'a pas le droits d'écriture dans votre dossier~/public_html
par sécurité. Or,Symfony
a besoin d'écrire des fichiers pour les cache et les logs. Un dossier spécial a été mis en place pour ces besoins :~/public_html/cache
.
- Vérifiez que l'utilisateur
www-data
a les droits de lecture, écriture et exécution sur ce dossier.
-
Nous devons donc configurer
Symfony
pour qu'il utilise ce dossier pour ses cache et logs. -
Rendez-vous dans
~/public_html/tp1
et ouvrez le fichiersrc/Kernel.php
. Ajouter les deux méthodes suivantes à la classe Kernel :
public function getCacheDir(): string
{
return dirname(__DIR__).'/../cache/cache';
}
public function getLogDir(): string
{
return dirname(__DIR__).'/../cache/log';
}
- Rendez-vous sur la page
http://londres.uca.local/~VOTRE_USERNAME/tp1/public/index.php
. Que constatez-vous ?
Découverte de la console Symfony
- Entrez la commande
symfony console
et parcourez les commandes possibles (elles vont servir pour la suite du TP!).
-
Quelle version de
Symfony
tourne à l'IUT ? Quelle version de PHP ? Attention! Si le serveur Londres a plusieurs installations de PHP en parallèle, vérifiez bien celle qui fait tourner votre serveurSymfony
! -
Comment créer un projet avec une version spécifique de
Symfony
?
- L'utilitaire
~/.local/bin/symfony
est un wrapper vers les commandescomposer
,php
, et la consoleSymfony
de votre projet qui se trouvetp1/bin/console
. Aussi, avec le même~/.local/bin/symfony
, la consoleSymfony
sera celle de votre projet et montrer la version choisie.
Création de votre premier controlleur
-
Utilisez la console
Symfony
pour créer un controlleur que vous appellerezQuoteController
. Quels sont les fichiers crées parSymfony
? Oberservez leur contenu. -
Quelle route mène à ce controlleur ? Trouvez la réponse dans le fichier du constrolleur, puis validez avec la commande de debug des routes dans le console
Symfony
(voirsymfony console debug -h
si besoin). Quelle commande avez-vous utilisé ? -
Modifiez le controlleur existant pour qu'il fasse un appel à l'une des API externes suivantes avec une requête GET:
- Attention! Toute la salle de TP partage la même IP donc pour éviter les quotas sur l'API, merci de rester raisonables sur les requêtes faites.
- Mofidiez ensuite le template
Twig
crée par la consoleSymfony
pour qu'il prenne en entrée une citation et son auteur et les affiche:
<p>
“{{ quote }}”
<br />
Author: {{ author | capitalize }}
</p>
Testez votre code
-
Utilisez la console
Symfony
pour créer un test de typeWebTestCase
que vous appellerezQuoteControllerTest
. Quels sont les fichiers crées parSymfony
? Oberservez leur contenu. -
Modifiez le test crée pour qu'il appelle la route vers votre contrôleur et valide le code de retour et le contenu de la vue
Twig
que vous avez implémenté. -
Vous remarquerez qu'il est compliqué de valider votre code alors qu'il affiche une citation aléatoire (les valeurs à tester le sont jamais les mêmes). Pour améliorer votre test, utilisez un mock-client (la classe
WebTestCase
deSymfony
étend la classePHPUnit_Framework_TestCase
).
Pour aller plus loin
- Générez une exception dans votre code (accès à une variable indéfinie, division par zéro, etc) et explorez la console de debug en cliquant en bas à gauche sur l'erreur.
- Étudiez la partie "HTTP Client" de la documentation
Symfony
pour améliorer votre code.