• 12 hours
  • Hard

Free online content available in this course.

course.header.alt.is_certifying

Got it!

Last updated on 8/26/24

Installez Symfony

Découvrez Symfony

Commençons par parler de l’application que vous allez développer tout au long de ce cours, dans le cadre d’une mise en situation.

Votre entreprise, Librogest, a été engagée par la médiathèque de la ville de Trifouillis-les-Oies. Sa gestionnaire, Amélie Lopez, souhaite disposer d’une application pour gérer son catalogue en ligne et permettre au personnel de connaître l’état de chaque livre. Après étude, il a été décidé de créer cette application en PHP, grâce au framework Symfony, et que c’est vous qui allez devoir vous y coller ! Vous serez aidé par Sébastien Brandt, un développeur senior, qui vous donnera des conseils tout au long du projet. Mais le projet, qui sera appelé Biblios, sera le vôtre.

La première chose que nous devons définir, c’est Symfony. Après tout, pour pouvoir apprendre à utiliser un outil, il faut savoir ce que c’est et ce qu’il fait.

D’accord, mais c’est quoi un framework ? Et pourquoi est-ce que je devrais en utiliser un ?

C’est une question tout à fait légitime ! On peut résumer ça assez facilement en disant qu’un framework, c’est une boîte à outils. Dans une boîte à outils, vous allez trouver de quoi régler la plupart des problèmes auxquels vous pourriez faire face lorsque vous bricolez. Eh bien un framework, c’est pareil. C’est une collection de petites librairies, ou composants, qui proposent chacune une fonctionnalité spécifique pour répondre à un besoin que vous pourriez avoir.

La différence avec plusieurs librairies logicielles indépendantes, c’est que là où en choisissant vos librairies à droite et à gauche vous risquez de perdre du temps à les faire communiquer ensemble, le framework vous propose un ensemble cohérent prêt à l’emploi. Ça ne veut pas dire que vous devez vous servir de tous ces outils. Mais vous pouvez le faire, sans avoir à vous demander s'ils seront compatibles entre eux.

Mais du coup, pourquoi devrais-je utiliser un framework, ou même des librairies ?

Pour vous éviter de réinventer la roue à chaque application. À chaque fois que vous allez créer une nouvelle application web pour un client, ou pour votre entreprise, certains besoins seront toujours les mêmes. Il vous faudra toujours faire en sorte que les utilisateurs puissent accéder à plusieurs pages (le routing), il faudra toujours avoir une logique qui permette d’afficher lesdites pages (le templating), il faudra très souvent de quoi accéder à une base de données, ou un accès sécurisé, etc.

Du coup, est-ce que vous allez développer toutes ces fonctionnalités depuis zéro à chaque fois, quand ces solutions vous attendent toutes prêtes ? La réponse à cette question est évidente : non, mieux vaut utiliser des solutions déjà prêtes et testées !

Et Symfony dans tout ça, qu’est-ce que c’est ?

Symfony est organisé principalement en “Composants”. Ces composants peuvent être divisés en trois grands types (dont un sous-type qu’on appelle aussi “Composants”) :

Les Composants

Les Polyfills

Les Contrats

Fournissent une fonctionnalité autonome et indépendante (console, routing, EventDispatcher…)

Outils de compatibilité qui permettent d’utiliser des fonctions de PHP normalement non disponibles dans la version que vous utilisez.

Donnent accès à des interfaces extraites des composants, pour être compatible avec Symfony quand on écrit un projet en dehors du framework.

À côté de cela, on trouve aussi des Bridges et des Bundles :

Les Bridges

Les Bundles

Apportent une couche de compatibilité entre une librairie externe à l’écosystème Symfony, et les composants de Symfony (pensez à l’adaptateur secteur qui vous permet de brancher votre chargeur sur le réseau électrique d’un pays étranger).

Des assemblages de plusieurs composants, auxquels on fournit une configuration et une intégration communes (exemple : le SecurityBundle rassemble tous les composants ayant trait à la sécurité de vos applications).

Installez Composer

Maintenant que nous avons une idée au moins générale de ce qu’est Symfony, une chose est claire : si c’est une librairie que nous allons réutiliser, il va falloir l’installer.

Attends, comment ça, l’installer, c’est un logiciel ? Avec une interface ?

Attention, pas du tout. Mais à chaque fois que vous voulez utiliser une librairie tierce dans votre code, il faut la télécharger et l’inclure dans votre projet. Pour pouvoir faire cela, nous allons utiliser un outil dont vous avez déjà certainement entendu parler : Composer.

Comme expliqué dans ce cours, Composer va vous aider à gérer l’autoload de vos classes. Mais pas que. Le but premier de Composer, c’est d’être un gestionnaire de dépendances.

Qu’est-ce que ça veut dire ?

Un gestionnaire de dépendances va vous permettre de lui indiquer de quelles librairies externes vous avez besoin ("dépendances"). Il va ensuite les télécharger dans un dossier spécifique de votre projet (pour Composer, ce sera le dossier  vendor  ), et s’assurer ensuite que l’autoload de PHP connaît le chemin adéquat pour charger toutes les classes que ces dépendances contiennent.

En résumé, vous demandez une dépendance à Composer, et il se charge de vous la rendre disponible. Symfony étant un framework complet que nous devons utiliser, il va nous falloir Composer pour ça. Nous allons donc l’installer de ce pas.

Ouvrez une fenêtre de terminal et exécutez les commandes suivantes (en remplaçant  <hash_d_intégrité>  par la valeur que vous trouverez sur le site de Composer (en anglais) :

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '<hash_d_intégrité>') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

Lorsque vous allez créer un projet avec Composer, plusieurs fichiers seront créés, chacun avec une utilité bien précise. Nous vous expliquerons tout cela en temps et en heure, avec un exemple concret pour vous faciliter les choses.

Découvrez Symfony Flex

Maintenant que nous vous avons présenté Symfony et Composer, il est important de mentionner un outil qui fait le lien entre les deux. Il s’agit de Symfony Flex.

Flex est un composant de Symfony, mais aussi un plugin pour Composer. C'est-à-dire qu’il va venir se greffer sur Composer pour lui ajouter de nouvelles fonctionnalités.

Mais lesquelles ?

Le framework Symfony est une collection de composants qui sont liés par une configuration commune. À chaque fois que vous ajoutez un composant ou une librairie externe, cette configuration évolue : vous devez ajouter ou modifier des fichiers de configuration, activer le nouveau composant… Beaucoup de choses assez peu intéressantes à faire, répétitives et chronophages. Du coup, Flex est là pour le faire à votre place !

Par le biais de fichiers appelés “composer recipes”, Flex va effectuer pour vous toutes ces tâches ingrates, en plus de vous donner accès à tout un tas de raccourcis pour installer ces composants de Symfony ainsi que des librairies populaires de son écosystème plus facilement.

Utilisez les outils Symfony en ligne de commande

Nous y sommes presque ! Avant de pouvoir installer le projet qui nous servira de base pour suivre ce cours, nous devons encore parler d’un outil qui va grandement vous simplifier la vie. Il s’agit du Symfony CLI.

Le Symfony CLI est un utilitaire en ligne de commande qui va vous simplifier la gestion de vos applications Symfony. Il s’installe de manière globale sur votre système, et vous sert de point d’entrée unique pour installer, mettre à jour et gérer vos applications Symfony. Vous passerez donc par lui pour utiliser Composer, ou exécuter des commandes en PHP.

Vous le trouverez à cette adresse. Suivez les instructions d’installation correspondant à votre système d’exploitation, et vérifiez que tout fonctionne correctement en ouvrant un terminal et en tapant  symfony version  . Vous pouvez aussi en profiter pour taper  symfony help  pour avoir un aperçu des capacités de cet outil.

Pour installer une nouvelle application minimaliste, il faudra donc entrer la commande suivante (le dossier désigné par  <nom_du_dossier>  doit être vide ou même absent) :

symfony new <nom_du_dossier>

Cette commande a de nombreuses options. Vous pouvez par exemple ajouter tous les composants nécessaires à la création d’une application web classique (avec interface) grâce à l’option  --webapp  , ou encore forcer l’utilisation d’une version spécifique de PHP avec l’option  --php=X.Y  , ou la version de Symfony avec l’option  --version=X.Y  . Et c’est là la grande force de cet utilitaire. Il vous permettra en fait de basculer sans difficulté entre plusieurs applications utilisant des versions différentes de PHP ou de Symfony. Plutôt pratique !

À vous de jouer

Contexte

Revenons-en à notre projet fil rouge, Biblios, l’application pour la médiathèque. Le projet a été signé et l’étude d’architecture a été faite. Sébastien, votre collègue et guide expérimenté, vous demande donc de démarrer le projet et d’installer Symfony.

Consignes

Commencez donc par installer le nécessaire pour votre projet :

  • Tout d’abord, installez Composer.

  • Installez ensuite le Symfony CLI.

  • Utilisez ensuite tout ce petit monde pour créer un nouveau projet Symfony appelé “Biblios”, qui devra embarquer tous les composants nécessaires à une application web.

C’est à vous !

C’est bon ?

Les étapes d’installation de Composer et du Symfony CLI étaient détaillées plus haut dans ce cours. Et pour la création du projet, il fallait taper la commande suivante dans un terminal :

symfony new –webapp biblios

En résumé

  • Les frameworks vous aident en vous évitant d’avoir à réinventer la roue à chaque application.

  • Symfony est un framework organisé en composants et bundles pour répondre à la plupart de vos besoins de développement.

  • Pour installer des dépendances externes comme Symfony, utilisez Composer.

  • Enfin, pour vous faciliter la tâche, utilisez le Symfony CLI pour installer et gérer vos applications Symfony plus facilement.

Et maintenant, voyons en quoi exactement Symfony va nous aider à créer des applications web ! 

Example of certificate of achievement
Example of certificate of achievement