Symfony est un framework web, c'est à dire un outil très complet permettant de réaliser des applications web.
D'après son créateur Fabien Potencier, Symfony est en fait plus un rassemblement de bibliothèques et de composants tous fortement découplés assemblées et paramétrés pour fonctionner ensemble.
Dans son "package" le plus courrant, Symfony propose d'intégrer des composants logiciels tels que:
Symfony se base sur composer pour organiser ce rassemblement de composants.
Cet outil déjà présenté précédemment dans ce cours permet de gérer les dépendances entre les différents composants.
Il est possible de créer un projet Symfony à l'aide de la commande:
composer create-project symfony/skeleton my-project
Composer va alors chercher toutes les dépendances nécéssaire et vous créer un projet Symfony vide
Depuis Symfony "Flex", ce squelette de projet est relativement vide, et il faudra choisir d'installer manuellement les composants dont nous aurons besoin.
L'utilisation du framework est technique et fait appel à de nombreux principes et outils, dont certains ont déjà été utilisés précédemmend dans le cours.
Ce cours n'ayant pas pour but de répeter l'excellente documentation officielle, nous allons très vite découvrir le framework en TD.
GitHub joue un rôle extrêmement important dans l'organisation du développement de Symfony et de ses composants.
Au centre d'une application Symfony, on trouve le Kernel, ou le noyau.
Auprès de ce noyau sont enregistrés des Bundles, (ou "paquets") qui sont en fait des composants. Symfony 4 "Flex" est à la base un noyau très léger sur lequel il est possible d'installer ces paquets.
Un bundle peut proposer de nombreuses choses: vues, contrôleurs, entités pour la base de données, services etc.
De nombreux bundles open-source peuvent être trouvés, ils sont notamment regroupés sur KnpBundles, packagist ou Symfony Recipes.
On pourra citer par exemple le FOSUserBundle, qui permet de simplifier la gestion des utilisateurs d'un site (inscription, identification, rappel du mot de passe etc.).
Ces bundles sont disponibles sur composer, ce qui permet d'écrire son application
et ses dépendances simplement à l'aide de composer.json
Lorsque vous créerez votre projet Symfony, vous obtiendrez l'arborescence suivante:
bin/
: les exécutables, notamment la console Symfonyconfig/
: la configuration de votre application webpublic/
: le dossier accessible à partir du serveur web pour votre application (qui contient les fichiers statiques et le fichier frontal index.php
src/
: le code source de votre applicationtemplates/
: les templates (vues)var/
: les fichiers temporaires (cache, logs)vendor/
: les bibliothèques externes.env
: le fichier contenant les variables d'environnement permettant de configurer vos paramètres