Cours de Rémi JarjatCours de Rémi Jarjat
  • Liste des cours
  • Culture numérique
  • Git
    • Terminologie
    • Avant de commencer
    • Créer un dépôt (local)
    • Enregistrer des changements
    • Des branches
    • Mise en commun du travail
    • Annuler des changements
    • Réécrire l'historique
    • Des outils pour se simplifier Git
    • Exercices
    • Exemples pratiques
  • Linux
    • Installation
    • Historique
    • Rangement des fichiers
    • Les processus
    • Commandes de base
    • Commandes avancées
    • /linux/6-other-technologies.html
    • Exercices
    • Correction des exercices
  • PHP
    • Environnement de travail
    • Bases du PHP
    • Tests et boucles
    • Procédures et fonctions
    • Interagir avec l'utilisateur
    • La temporisation de sortie
    • PHP Doc et PSR
    • PHP Orienté objet
    • Héritage et objets
    • Factorisation
    • Manipuler la BdD avec PDO (PHP Data Object)
    • Architecture MVC
    • Webservices REST
    • Exercices - Bases
    • Exercices - Séparer en plusieurs fichiers
    • Exercices - POST et SESSION
    • Exercices - Panier et validation
    • Exercices - Objets
    • Exercices - BdD avec PDO
    • Projet - montage d'ordinateurs
    • Projet - Personnages de Jeux de Rôle
  • Symfony
    • Installer Symfony et son environnement de travail
    • Structure et utilisation d'un projet
    • Le routing
    • Les controllers
    • Twig
    • Les services et l'injection de dépendances
    • Doctrine et la BdD
    • Formulaires
    • Les traductions
    • Event listeners/subscribers
    • Connexion et sécurisation
    • Bundles
    • Easy Admin Bundle
    • API Platform
    • Pense-bêtes
    • Symfony au quotidien
    • Travailler avec Docker
    • Projet : annonces de SPA / éleveurs
    • Exercices
  • Javascript
    • Les bases du langage
    • Manipulation logique
    • Le DOM
    • JQuery
    • Ajax
    • Programmation orientée objet
    • Webpack
    • Outils utiles
    • Révisions
  • Serveur Lamp
  • Déploiement
    • Des outils et manières de faire
    • Déploiement par FTP
    • Wordpress
    • Intégrer Git dans le processus
    • GitHub Pages pour déployer facilement
    • Symfony et Angular
  • Docker
  • Intégration continue
  • Sécurité informatique

Installer Symfony et son environnement de travail

  • Plugins utiles pour nos IDE
    • PHPStorm
    • VS Code
  • Requis techniques
    • Annotations et attributs
  • Outils de qualité de code
    • Php CS Fixer
    • PHPStan
    • Lancer nos outils avec Composer
  • Exercices

Avant de pouvoir travailler concrètement sur Symfony, il faut mettre en place notre environnement de travail.

Pour cela, nous allons installer :

  • Composer, gestionnaire de paquet pour PHP (ou lien direct vers l'installeur)
  • Installer Scoop
    • Ouvrir Powershell et lancer les commandes
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
irm get.scoop.sh | iex
  • l'outil en ligne de commande de Symfony (ou lien direct vers l'installeur) ou avec Scoop :
scoop install symfony-cli

Si vous utilisez Windows, je vous conseille d'utiliser Powershell pour éviter des erreurs de rendu.

Pour créer un projet Symfony, nous pouvons maintenant utiliser notre ligne de commande (PowerShell dans mon cas) :

  symfony new --webapp my_project --php=8.1

Vous pouvez alors ouvrir ce nouveau dossier avec votre IDE favori. Les deux sous-parties suivantes sont consacrées à la gestion d'un projet Symfony dans notre IDE. Pour la base de données, nous aurons besoin de Wamp/Mamp.

Plugins utiles pour nos IDE

PHPStorm

Pour installer un plugin dans PHPStorm, aller dans les options, partie plugins (File > Settings > Plugins) et chercher dans la partie Marketplace

  • Symfony Support
  • .env files support
  • OpenAPI (Swagger) Editor

Voir également la vidéo dédiée à la configuration de PHPStorm

VS Code

Pour installer un plugin dans VSCode, aller dans le menu de gauche, partie Extensions (avec 4 petits carrés). Pour chacun de ces plugins, je vous conseille d'en regarder la doc et de suivre son processus d'installation.

  • DotENV pour mettre de la couleur dans les fichiers d'environnement (.env)
  • MySQL (de Weijan Chen) pour faire le lien avec votre base de données (je vous ai fait une vidéo d'installation et de configuration)
  • PHP (de DevSense)
  • Symfony for VSCode (de TheNouillet)
  • Twig Language 2 (de mblode)
  • Git History (de Don Jayamanne)

Requis techniques

Avant de commencer à créer un site avec Symfony, certaines notions sont nécessaires :

  • Une bonne maîtrise du PHP orienté objet (y compris les espaces de nom)
  • Le principe MVC pour organiser nos fichiers
  • Les annotations et attributs en PHP (voir point suivant)

Annotations et attributs

Je vous invite à lire le très bon article de Maxime Colin, de la société Elao sur les attributs

Dans plusieurs langages, et particulièrement en PHP avec Symfony, nous avons besoin de fournir des informations supplémentaires sur des symboles (classes, interfaces, traits, etc.), propriétés ou méthodes. Cela permet notamment de générer une documentation, d'améliorer la complétion des IDE (comme PHP Storm ou VsCode), mais aussi définir le fonctionnement de certaines librairies ! Nous pouvons le faire via des commentaires ou des attributs, 2 éléments du langage PHP que nous allons détailler un peu plus ici.

C'est le cas en Symfony, notamment pour la définition des routes ou la définition des entités.

Les annotations sont des commentaires spéciaux (au format PHPDoc). Dans l'exemple suivant, on appelle une classe Route avec les paramètres de son constructeur, que l'on peut nommer (pour les utiliser dans le désordre). L'inconvénient est le besoin d'un parser (librairie qui va lire nos fichiers PHP pour chercher les annotations) qui, bien que fourni avec Symfony, rajoute un travail supplémentaire dans l'interprétation de notre code.

Un exemple d'annotation :

/**
 * @Route('/', name="default_index")
 */

Un attribut est une expression du langage PHP, qui ne nécessite donc pas l'appel à un parser et qui permet le même fonctionnement.

Le même exemple, en attribut :

#[Route('/', name: "default_index")]

Outils de qualité de code

Php CS Fixer

Symfony suit les conventions d'écriture PSR, mais il n'est pas toujours aisé de les appliquer au quotidien. Heureusement, des outils comme Php CS Fixer ont été créé pour nous aider dans cette tâche. Vous pouvez l'ajouter en dépendance de développement de votre projet avec la commande :

composer require --dev friendsofphp/php-cs-fixer

Vous pourrez ensuite le lancer avec vendor/bin/php-cs-fixer fix pour mettre à jour votre code, pour respecter les standards de code de Symfony.

Vous pouvez également trouver la configuration par défaut dans le fichier .php-cs-fixer.dist.php qui a été créé. Si vous souhaitez la modifier, vous pouvez le faire dans ce fichier, ou dans un fichier .php-cs-fixer.php à la racine de votre projet (il ne sera pas versionné).

PHPStan

PHPStan est un analyseur statique de code. Son but est de détecter autant d'erreurs que possible, simplement en relisant votre code, vérifiant la cohérence des types (de vos variables, paramètres, retours, etc.), des appels, des classes, etc.

Il aide également à écrire un code solide et compréhensible pour les autres développeurs, en renforçant les typages et d'autres bonnes pratiques.

PHPStan fournit 10 niveaux de tests (de 0 à 9), plus ou moins exigeants et nécessitant plus ou moins de modifications dans votre code, pour le rendre meilleur. Je recommande un niveau de 5, au minimum, sur les projets Symfony.

Pour l'installer sur un projet Symfony :

composer require --dev phpstan/extension-installer phpstan/phpstan-symfony phpstan/phpstan-doctrine phpstan/phpstan-strict-rules

Je vous conseille de créer un fichier phpstan.neon à la racine de votre projet, pour configurer l'exécution de PHPStan et le lancer plus simplement :

parameters:
  level: 9
  paths:
    - src

Bien sûr, si vous ne voulez pas affronter le niveau 9 directement, remplacez par le niveau souhaité (il est utile de corriger les problèmes en augmentant le niveau progressivement).

Pour lancer PHPStan : vendor/bin/phpstan analyse

Lancer nos outils avec Composer

Pour éviter de retenir des chemins complexes, nous pouvons préciser des scripts dans notre composer.json (⚠️ ne remplacez pas les scripts existants, ajoutez seulement les vôtres) :

{
  "scripts": {
    "fix": "php-cs-fixer fix",
    "analyse": "phpstan analyse"
  }
}

Ajouter les 2 lignes fix et analyse dans vos scripts, permet de définir des raccourcis pour lancer Php CS Fixer et PHPStan, sans avoir à se rappeler le détail des commandes 😉 .

Ces commandes peuvent être lancées avec composer fix et composer analyse

Exercices

Nous allons pratiquer à l'aide d'un petit projet : un blog. Nous allons le construire étape par étape, à chaque section du cours.

Dans un premier temps, il nous faut :

  • initialiser un nouveau projet Symfony
  • ajouter php-cs-fixer et phpstan dans les dépendances de dev du projet
    • Les configurer
  • les ajouter aux scripts de composer
Dernières mise à jour :
Next
Structure et utilisation d'un projet