Symfony

Pré-requis

PHP et ses extensions

Composer

MySQL

Comprendre les échanges client/serveur

Installer Symfony CLI

Symfony CLI

Check requirements

symfony check:requirements
Voir les extensions PHP nécessaires

Créer un projet Symfony

symfony new my_project

Architecture d'un projet Symfony

						
						my_project/
							.
							├── bin/ # Fichiers exécutables
							├── config/ # Configuration des services et des packages
							├── public/ # Racine web
							├── src/ # Code source PHP (contrôleurs, entités, etc.)
							├── var/ # Fichiers temporaires (logs, cache, etc.)
							├── vendor/ # Dépendances gérées par Composer
							├── .env # Variables d'environnement
							├── composer.json # Dépendances du projet
							├── symfony.lock # Verrouillage des versions des packages
						
					

Démarrer le serveur

							
								symfony server:start
								# ou
								symfony serve
							
						

Scaffolding

Installer le bundle Maker pour générer du code

							composer require symfony/maker-bundle --dev
						

Tous les bundles Symfony sont disponibles sur la documentation officielle.

Architecture MVC

  • Modèle : Entités et gestion de la base de données
  • Vue : Templates Twig
  • Contrôleur : Logique métier et gestion des requêtes

Contrôleur -> Vue

  1. Le client envoie une requête HTTP au contrôleur.
  2. Le contrôleur traite la requête puis renvoie une vue.

Vue -> Contrôleur -> Modèle

  1. Le client interagit avec la vue (formulaire, lien, etc.).
  2. La vue envoie une requête HTTP au contrôleur.
  3. Le contrôleur traite la requête puis interagit avec le modèle.

Vue -> Controleur -> Modèle -> Controleur -> Vue

  1. Le client interagit avec la vue (formulaire, lien, etc.).
  2. La vue envoie une requête HTTP au contrôleur.
  3. Le contrôleur traite la requête puis interagit avec le modèle.
  4. Le modèle renvoie les données au contrôleur.
  5. Le contrôleur renvoie une vue au client.

Controleur -> Modèle -> Controleur (API)

  1. Le contrôleur reçoit une requête HTTP.
  2. Le contrôleur interagit avec le modèle pour récupérer ou modifier des données.
  3. Le modèle renvoie les données au contrôleur.

Mon premier contrôleur

								
									php bin/console make:controller
									# ou
									symfony console make:controller
								
							

Le contrôleur répond aux requêtes HTTP en renvoyant des réponses appropriées (HTML, JSON, etc.).

On pourrais faire ça

Ou encore ça

Twig

Mais on vas plutôt utiliser Twig pour générer nos réponses HTML.

Twig est un moteur de templates pour PHP qui permet de séparer la logique de présentation de la logique métier.

C'est un bundle donc il faut l'installer avec Composer.

								composer require symfony/twig-bundle
							
							
							my_project/
								.
								├── ...
								├── src/
								├── templates/ # Fichiers de templates Twig
								├── var/ 
								├── ...
							
						

Supprimer l'ancien controlleur et recommencer maintenant qu'on a Twig

Grâce à la méthode render on peut passer des variables à notre template Twig.

							{% ... %} # syntaxe pour les blocs Twig.
							{{ ... }} # syntaxe pour afficher des variables.
						

Bloc Twig

La documentation

block et extends

include

if

							
								{% if condition %}
									...
								{% elseif autre_condition %}
									...
								{% else %}
									...
								{% endif %}
							
						
							
								{% if app.user %}
									

Bienvenue {{ app.user.name }}

{% else %}

Veuillez vous connecter.

{% endif %}

for

							
								{% for item in items %}
									...
								{% else %}
									...
								{% endfor %}
							
						
							
								{% for product in products %}
									{{ product.name }}
								{% else %}
									

Aucun élément trouvé.

{% endfor %}

A vous !

  1. Créer un repository pour ce projet.
  2. Créer les pages statiques de votre application.
  3. Créer une route API qui retourne quelques chose d'intéressant.
  4. Documenter les routes.