Installation et programme
Introduction
L’objectif est ici de mettre en place les outils nécessaires au développement d’applications web avec Symfony.
Il vous est demandé d’effectuer ces actions avant la première séance.
Pour faciliter le développement, éviter les problèmes de conflits avec des installations précédentes et éviter de perdre du temps à télécharger, installer et résoudre les problèmes sur le poste de chacun, nous allons utiliser une image VirtualBox basée sur Ubuntu.
Cette image contiendra tous les outils dont nous allons nous servir tout au long du cours (voir section Les outils).
Installation
Si vous n’avez pas VirtualBox d’installé sur votre machine, vous pouvez le télécharger ici.
Téléchargez ensuite la dernière version de l’image au format OVA ici.
Pour l’importer dans VirtualBox :
- Ouvrez VirtualBox
- Fichier > Importer un appareil virtuel (en anglais File > Import appliance)
- Sélectionnez le fichier téléchargé
- à l’étape suivante, veillez à sélectionner
- Inclure uniquement les adresses MAC de l’interface réseau NAT
- Importer les disques durs comme VDI
Lancer la VM, après quelques secondes vous devriez arriver sur le bureau Ubuntu.
Cliquez ici en cas de problème
Pour fonctionner, Virtual Box nécessite que la virtualisation soit activée dans votre BIOS.
Vous pouvez trouver comment y accéder et quel paramètre modifier en cherchant sur internet "Activer virtualisation" accompagné de la marque de votre PC (et éventuellement la marque du processeur).
Si vous remarquez des lenteurs, quittez la VM, cliquez sur la VM puis Paramètres dans Virtual Box.
Dans Système, vous pouvez augmenter la mémoire RAM allouée (restez dans la zone verte).
Dans Système > Processeur, vous pouvez augmenter le nombre de coeurs alloués (restez dans la zone verte).
Dans Affichage, vous pouvez ajuster la mémoire vidéo et cocher la case "Activer l'accélération 3D".
Vous êtes déjà connecté. Si votre session se coupe ou que vous devez exécuter des commandes en sudo
, connectez-vous
avec les identifiants :
- user: symfony
- password: symfony
Bien que la VM contienne tout le nécessaire, il se peut que les versions installées au moment de la création de la VM ne soit pas les dernières.
Assurez-vous que les outils sont à jour avec les commandes suivantes :
sudo symfony self:update -y
sudo apt-get update
sudo apt-get upgrade
sudo snap refresh
Appropriation de la machine
Cette machine virtuelle est la vôtre !
N’hésitez pas à vous l’approprier et notamment à vous connecter à vos applications préférées.
Vous aurez au moins besoin de :
- votre messagerie universitaire
- votre compte Discord (Discord est pré-installé dans la VM)
- votre compte Github/Gitlab (au choix)
Une fois fait, vous êtes prêts pour le cours. Je vous recommande de quand même lire les parties Pré-requis et Les outils.
Pré-requis
Ce cours nécessite certaines connaissances qui serviront de base à votre découverte du framework Symfony :
- HTML, CSS, JavaScript
- Syntaxe du langage PHP (variables, boucles, conditions, fonctions, classes). Voir DreamInCode PHP Reference Sheet
- Programmation orientée objet (classes, interfaces, héritage, visibilité des propriétés et fonctions, encapsulation, classes abstraites, fonctions statiques, etc)
- Notions d’architecture logicielle (namespaces, design patterns, architecture MVC)
Les outils
IDE
Je recommande fortement l’utilisation de PhpStorm disponible pour Windows/Linux/macOS.
En tant qu’étudiant, vous avez accès à une license gratuite pour la durée de vos études.
Vous possèdez peut-être déjà une license si vous avez déjà utilisé d’autres outils de la suite Jetbrains tel que IntelliJ Idea ou PyCharm.
Il existe d’autres IDE ou éditeur de texte mais ceux-ci sont moins adaptés et je ne les maîtrise pas personnellement :
- Visual Studio Code - Windows/Linux/macOS
- Eclipse - Windows/Linux/macOS
- Netbeans - Windows/Linux/macOS
PHP
Symfony est écrit en PHP, nous allons donc l’utiliser tout au long de nos TPs.
Certains d’entre vous ont peut-être une “mauvaise image” de PHP. Cette réputation vient du fait que PHP est le premier langage de programmation qui a permis au plus grand nombre de créer son site web, connecté à une base de données et avec du HTML dynamique.
Au fur et à mesure, PHP s’est imposé pour la création de sites et d’application web dynamiques mais cela sans conventions, sans bonne pratique de développement, sans typage des propriétés, souvent “Quick and Dirty”, etc
Au fil des années, PHP s’est largement amélioré notamment grâce aux différents frameworks, aux améliorations successives du langage, la standardisation de la programmation objet, la création du PHP-FIG, etc
Depuis la version 7 de PHP, les notions de typage fort ont été introduites dans PHP comme c’était déjà le cas dans d’autres langages comme Java. Cette version a également amélioré la performance par rapport à PHP 5 par 2.
Nous utiliserons dans le cours PHP 7.4, sachez néanmoins que PHP 8 est sorti en novembre 2020 mais les librairies PHP ne sont pas encore toutes compatibles ce qui rend son utilisation plus compliqué pour l’instant.
Git
- Configurez Git avec les commandes suivantes :
git config --global user.name "PRENOM NOM"
git config --global user.email "EMAIL@DOMAINE"
git config --global core.editor nano
- Tapez dans un terminal
ssh-keygen -f /home/symfony/.ssh/id_rsa
et choisissez un mot de passe - Copiez le contenu du fichier
~/.ssh/id_rsa.pub
- Ajoutez votre clé SSH à Github ou Gitlab
- (Optionnel) Vous pouvez installer une application graphique pour faciliter l’utilisation de Git.
- Github Desktop Windows/macOS
- Git Kraken Windows/macOS/Linux
Lien utile : Git Cheat Sheet pour Git et Github en français.
Composer
Composer est le gestionnaire de dépendances PHP, il est essentiel pour une bonne utilisation de Symfony.
Il peut être comparé à npm
pour Javascript, pip
pour Python ou encore Gradle et Maven pour Java.
Composer Cheat Sheet - aide mémoire intéractive en anglais sur composer
Programme
Voici le programme du cours, il est donné à titre indicatif et est susceptible de changer.
- Introduction
- Composer
- Création d’un projet Symfony
- Première page
- Routing et Templating
- Intégration d’un template
- Base de données
- Injection de dépendances
- Forms et validation
- Création de groupes et présentation du sujet de projet
- QCM d’évaluation des connaissances
Sujets transversaux :
- Qualité du code
- Sécurité
- Principes DRY, KISS, SOC et SOLID
- Versionning et git
- Protocole HTTP
- Debug
- Travail collaboratif
Evaluation
TPs notés
Tous les TPs seront notés.
Ils seront à rendre sur un repository Github ou Gitlab auquel vous me donnerez accès s’il est en privé
(@t-richard
sur les deux plateformes).
Vous serez notés sur les points suivants :
- complétude du rendu (vous avez fait tous les TP en suivant les sujets)
- respect des bonnes pratiques de développement
- utilisation de git et régularité dans le travail (commits réguliers)
- rendu à temps (la date sera définie en fonction du groupe)
- BONUS : fonctionnalités supplémentaires étendant le sujet du TP
Participation
La participation au cours sera prise en compte dans la notation du module.
Posez des questions, faites des remarques, demandez des précisions, des ressources supplémentaires, aidez vos camarades, participez à l’amélioration des sujets, faites des parallèles avec d’autres cours ou vos expériences professionnelles, etc
Surtout dans le cas de cours à distance, l’interaction rendra le cours plus intéressant pour tout le monde.
Je passerai également lors des TPs vous poser des questions pour jauger de votre compréhension des différents sujets abordés. Ces questions pourront être notées, une raison de plus pour poser des questions si ce n’est pas clair pour vous.
Projet
Vous formerez des groupes 4 personnes pour réaliser un projet sur un thème au choix. Formez vos groupes et commencez à réfléchir au sujet dès le début du cours, n’attendez pas la dernière minute.
Ce projet devra vous permettre de mettre en application les différentes notions vues en cours.
Vous devrez faire une application qui répond à un véritable besoin, voici quelques pistes de recherche :
- vous avez une problématique dans un de vos loisir/passion (association sportive, jeux en ligne, …)
- vous avez une problématique dans votre vie privée que vous souhaitez résoudre (domotique, gestion du domicile, vie étudiante, …)
- vous connaissez une personne de votre entourage qui pourrait avoir besoin d’une application web (chef d’entreprise, association, …)
- votre école pourrait bénéficier d’une application pour automatiser/simplifier certaines procédures (administratif, gestion, communication, BDE, etc)
- vous avez une idée de service SaaS à destination des entreprises ou des développeurs
N’hésitez pas à faire preuve d’audace. Si vous doutez de votre sujet et/ou de sa faisabilité, n’hésitez pas à m’en faire part afin que je puisse vous guider.
Vous serez notés sur :
- le respect des spécifications communiquées
- l’application des éléments vus en cours
- la répartition des tâches
- la qualité du code et le respect des bonnes pratiques
- l’utilisation régulière de git
- l’application des conseils que j’ai pu vous communiquer lors de la validation du sujet
- la complexité des méchanismes mis en oeuvre
Installation manuelle
AMP Stack
Une stack AMP (Apache, MySQL/MariaDB, PHP) permet de mettre en place un environnement de développement local comportant tous les outils nécessaires.
Il existe pleins d’outils pour installer une telle stack.
- Laragon - Windows (recommandé)
- Wamp - Windows
- Xampp - Windows/Linux/macOS (prendre ici une version avec php 7.4.x)
Si vous êtes sur Windows, je recommande l’utilisation de Laragon. Ce logiciel apporte non seulement Apache, Mysql, PHP mais aussi une gestion automatique des hôtes virtuels en https, le terminal Cmder et le logiciel de gestion de base de données HeidiSQL.
Lors du choix de l’édition de Laragon, vous avez le choix entre Full et Lite.
Je recommande l’installation de la version Full, car vous pouvez passer l’installation de Composer et passer à l’étape de 2 de l’installation de Git.
Sur Laragon, vous pouvez ouvrir un terminal avec le bouton Terminal
dans l’interface.
Téléchargez également la version 7.4 de PHP et installez là dans Laragon comme indiqué ici
Git
Si vous avez choisi l’édition Lite de Laragon, vous pouvez ajouter Git avec la fonctionnalité Quick Add de Laragon.
- Rendez-vous sur le site officiel de GIT pour télécharger et installer la dernière version de Git.
- Vérifiez votre installation en ouvrant le terminal de votre choix avec la commande
git --version
, la commande doit vous afficher la version de Git. - Configurez Git avec les commandes suivantes :
git config --global user.name "PRENOM NOM"
git config --global user.email "EMAIL@DOMAINE"
git config --global core.editor nano
- (Optionnel) Vous pouvez installer une application graphique pour faciliter l’utilisation de Git.
- Github Desktop Windows/macOS
- Git Kraken Windows/macOS/Linux
Lient utile : Git Cheat Sheet pour Git et Github en français.
Composer
Composer est le gestionnaire de dépendances PHP, il est essentiel pour une bonne utilisation de Symfony.
Rendez-vous sur le site de Composer pour télécharger et installer composer.
Sur Linux (et Mac ?), vous pouvez exécuter la commande curl -sS https://getcomposer.org/installer | php -- --filename=composer --install-dir=/usr/local/bin
Sur Windows, téléchargez l’exécutable sur le site de composer
Composer a besoin de l’exécutable PHP sur Windows, avec Laragon vous pouvez définir C:\laragon\bin\php\php-7.2.19-Win32-VC15-x64\php.exe
comme exécutable.
Composer Cheat Sheet - aide mémoire intéractive en anglais sur composer
IDE
Je recommande fortement l’utilisation de PhpStorm disponible pour Windows/Linux/macOS.
En tant qu’étudiant, vous avez accès à une license gratuite pour la durée de vos études.
Vous possèdez peut-être déjà une license si vous avez déjà utilisé d’autres outils de la suite Jetbrains tel que IntelliJ Idea ou PyCharm.
Symfony CLI
Suivez la documentation officielle en fonction de votre système d’exploitation.
Vérification finale
Dans votre terminal (Laragon fournit Cmder par défaut en cliquant sur le bouton Terminal
), vous devriez pouvoir taper les 4 commandes suivantes sans avoir d’erreur
php -v
git --version
composer --version
symfony -v
mysql --version