Symfony

Présentation

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:

  • Doctrine pour requêter la base de données
  • Twig pour le rendu de ses templates
  • SwiftMailer pour l'envoi d'e-mails

Installation

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

Modularité

Depuis Symfony "Flex", ce squelette de projet est relativement vide, et il faudra choisir d'installer manuellement les composants dont nous aurons besoin.

Utilisation

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.

Communauté

Organisation

GitHub joue un rôle extrêmement important dans l'organisation du développement de Symfony et de ses composants.

Bundles

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.

Des composants à la carte

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

Arborescence

Lorsque vous créerez votre projet Symfony, vous obtiendrez l'arborescence suivante:

  • bin/: les exécutables, notamment la console Symfony
  • config/: la configuration de votre application web
  • public/: 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 application
  • templates/: 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

TD 6