Getting Started with Symfony 5 🚀
Les liens :
- Site officiel de Symfony
- Documentation de Symfony
- Symfony Releases
- Quick tour
- Getting Started with Symfony 4
Les étapes de l’installation de Symfony sont disponible dans la Documentation - Setup Symfony.
Installation simple
Création d’un projet Symfony
composer create-project symfony/skeleton tp-symfony
ou
symfony new tp-symfony
Il existe aussi une version “website” du skeleton qui contient davantage de paquets et qui est plus adapté au développement de site web (connexion à la base de données, templating, debug, etc).
Mais nous allons nous en passer pour l’instant.
Lancement du Serveur
- DĂ©placez vous dans le dossier du projet avec
cd tp-symfony
. - Exécutez la commande
symfony server:start
pour lancer le serveur interne de PHP. - Lancer sur votre navigateur la page localhost:8000
Création d’un repository git
Symfony génère pour vous un fichier .gitignore
qui permet d’ignorer les fichiers qui ne doivent pas
se retrouver sur git.
Ajoutez la ligne .idea
dans ce fichier pour ignorer les fichiers générés par PHPStorm.
Créez un repository sur Github ou Gitlab.
Suivez les instructions pour configurer le remote et pousser votre premier commit.
Vous pousserez par la suite régulièrement (au moins une fois par demi-journée et à chaque fin de chapitre).
Création de notre première page
Nous allons créer une simple page qui affiche un nombre aléatoire.
Créez le fichier src/Controller/LuckyController.php
avec ce contenu
<?php
// src/Controller/LuckyController.php
namespace App\Controller;
use Symfony\Component\HttpFoundation\Response;
class LuckyController
{
public function number(): Response
{
$number = random_int(0, 100);
return new Response(
"<html><body><p>Lucky number: $number</p></body></html>"
);
}
}
Ici, nous avons une fonction qui génère un nombre entre 0 et 100 et retourne un objet Response
contenant du HTML.
Le but est maintenant de faire en sorte de transformer ça en une page, accessible depuis notre navigateur.
Pour cela, ajoutez le code suivant dans config/routes.yaml
# config/routes.yaml
app_lucky_number:
path: /lucky_number
controller: App\Controller\LuckyController::number
Vous pouvez maintenant accéder à votre page à l’adresse http://localhost:8000/lucky_number !
On vient ici de créer une route nommée app_lucky_number
, qui associe le chemin /lucky_number
à la méthode number
de la classe App\Controller\LuckyController
.
Le nom nous sera utile pour plus tard 🙂
Annotations
Il y a une autre façon de configurer les routes, qui est souvent préférée à la configuration en YAML.
Ce sont les annotations, pour pouvoir les utiliser, lancez la commande suivante
composer require annotations
Supprimez maintenant ce que vous aviez ajouté dans config/routes.yaml
# config/routes.yaml
- app_lucky_number:
- path: /lucky_number
- controller: App\Controller\LuckyController::number
Et ajoutez la configutration suivante dans votre controller
<?php
// src/Controller/LuckyController.php
namespace App\Controller;
use Symfony\Component\HttpFoundation\Response;
+ use Symfony\Component\Routing\Annotation\Route;
class LuckyController
{
+ /**
+ * @Route("/lucky_number", name="app_lucky_number")
+ */
public function number(): Response
{
$number = random_int(0, 100);
return new Response(
"<html><body><p>Lucky number: $number</p></body></html>"
);
}
}
Maintenant, actualisez la page. Normalement rien n’a changé.
L’avantage des annotations, c’est que la configuration est au plus près du code en question ce qui rend le projet plus facilement compréhensible.
DĂ©finition
Debug Bar
Installez le Profiler Symfony. C’est un outil permettant d’avoir beaucoup de détails lors du développement afin de pouvoir facilement débugger et comprendre l’origine d’un bug ou d’une erreur.
Pour l’installer :
composer require debug
Actualiser la page. Une barre devrait maintenant apparaître en bas de la page avec différentes informations (temps d’exécution, temps de rendu, logs, etc)
En cliquant sur un élément de la barre de debug, on arrive sur la page de détails du Profiler.
Observez la barre de debug et naviguez dans les différents onglets du Profiler. Au fur et à mesure que nous installerons de nouveaux packages, nous verrons de nouvelles options apparaître.
Une fonction utile pour le debug est dump()
, elle est fournie avec le debug pack installé précédemment.
Dans votre controller ajoutez
$user = [
'name' => 'John Doe',
'place' => 'Lens',
];
dump($user);
En actualisant la page, un symbole “Cible” devrait apparaître dans la barre et en passant le curseur dessus,
vous devriez voir le contenu de la variable $user
.
Installation et Configuration du Plugin Symfony pour PHPStorm
Le plugin symfony pour PHPStorm permettra à notre IDE de reconnaître toutes les fonctionnalités de Symfony.
Pour l’installer, rendez-vous dans Settings > Plugins puis Marketplace et cherchez un plugin nommé Symfony Support
et installez-le.
Dans File > Settings > PHP > Symfony
Cocher la case Enable for this project
et mettre src
pour App Directory et public
pour Web Directory.
L’objet Request
Nous allons maintenant voir comment récupérer certaines informations de la requête HTTP.
Changer le code de votre controller pour ajouter un import de l’objet Request
+ use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
Puis changez la signature de la méthode lucky
- public function number(): Response
+ public function number(Request $request): Response
Symfony va automatiquement comprendre que vous souhaitez récupérer la requête.
Par exemple, si l’utilisateur accès à l’UR http://localhost:8000/lucky_number?name=John, on aimerait
pouvoir récupérer le paramètre name
présent dans la Query String
Avec Request
, il est possible de le faire comme ceci $name = $request->query->get('name')
.
Modifiez votre code pour afficher le paramètre name
sur la page.
Découvrir l’Architecture de Symfony 5
Doc de Référence : https://symfony.com/doc/current/page_creation.html#checking-out-the-project-structure
Liens utiles
Votre plus grande alliée est la documentation offcielle de Symfony.
- https://symfonycasts.com/ tutoriel de qualité en vidéo pour POO/ Javascript / Symfony / PHP (Gratuit et Payant) (en anglais)
- https://www.grafikart.fr/formations/php formation vidéo gratuite sur PHP (Gratuit) (en français)
- https://www.grafikart.fr/formations/git Formation vidéo git (Gratuit) (en français)
- https://www.grafikart.fr/tutoriels/composer-480 Tutoriel vidéo pour composer (Gratuit) (en français)
- https://github.com/symfony/demo Projet Symfony de démonstration (anglais)