Commencer à utiliser le framework Symfony n’est pas toujours chose facile. Souvent les frameworks sont assez complexes, pleins de fichiers, de fonctionnalités, structurer d’une certaine manière, avec des conventions à respecter, … Même le fait d’installer Symfony et lancer son premier projet peut faire peur.
Tu as peut-être entendu dire que Symfony était un framework compliqué à apprendre, complexe à utiliser. Mais toi tu fais partie des gens qui veulent apprendre ce framework, qui veulent l’utiliser au quotidien pour réaliser de beaux projets, bien structurés et de qualité.
D’ailleurs je te rassure, Symfony n’est pas si compliqué que ça à apprendre. Si tu comprends bien la programmation orientée objet et que le modèle MVC (Model View Controller) te parle, il n’y aura aucun souci. D’ailleurs si tu souhaites apprendre à utiliser Symfony, j’ai créé une formation complète sur Udemy, tu peux la retrouver en cliquant ici
Apprendre le framework Symfony sera un gros plus pour toi. Beaucoup d’entreprises sont à la recherche de développeurs maitrisant ce framework. Pourquoi ? Parce qu’il est puissant et permet d’avoir une bonne structure du code pour le faire évoluer au fil du temps.
Dans cet article, je vais t’accompagner dans tes premiers pas. Je vais t’aider à installer Symfony et à créer ton premier projet. On fera le tour de la structure de Symfony puis je te montrerai comment bien utiliser le serveur local proposait par le client Symfony.
Tu es prêt ? C’est parti !
Qu’est-ce que Symfony ?
Avant de voir comment installer Symfony, on va voir ensemble ce qu’est Symfony.
Symfony est un framework PHP. C’est-à-dire un « cadre de travail », une « boite à outils » que l’on va utiliser pour créer des projets PHP. C’est d’ailleurs l’un des frameworks les plus populaires pour le langage PHP.
L’utilisation d’un framework PHP a de nombreux avantages.
Il permet de structurer les projets. En effet, ce framework repose sur le design pattern MVC (Modèle Vue Contrôleur). Ce design pattern permet de dissocier chaque partie d’une application afin qu’elles puissent fonctionner indépendamment les unes des autres.
De cette manière, le code est beaucoup plus maintenable et évolutif dans le temps. Cette structure permet aussi d’imposer une façon commune de travailler au sein d’un projet. Symfony a ses propres conventions, ce qui oblige chacun à les respecter et ainsi augmenter la qualité du code.
L’un des atouts de Symfony est sa communauté. Le framework existant depuis 2005, il a eu le temps de devenir mature, d’évoluer et de se construire une grosse communauté de développeurs. Aujourd’hui il est très facile de trouver de la documentation et de l’aide sur le web.
Maintenant qu’on a fait un petit tour d’horizon de ce qu’est Symfony, on va pouvoir commencer la partie technique.
Pré-requis
Bah oui, on ne va pas partir la fleur au fusil, à coder directement. Il y a quelques prérequis avant de commencer à coder notre projet Symfony.
Tout d’abord au niveau des prérequis techniques, il faut être à l’aise avec la programmation orientée objet. Si tu n’es pas tout à fait à l’aise avec ça, tu risques de galérer un peu.
Ensuite, il te faudra quelques connaissances de MySQL ainsi que comprendre comment fonctionne le modèle MVC (Model Vue Contrôleur).
Si tu maitrise tout ça, tu peux y aller serein.
Maintenant, on va avoir besoin de quelques bricoles avant d’installer Symfony.
La première chose à avoir et à installer sur ton poste, c’est Composer. Tu peux le télécharger en cliquant ici.
Composer c’est quoi ?
Composer est un gestionnaire de dépendances pour PHP. En gros, il te permet d’ajouter et de gérer des dépendances. C’est-à-dire des librairies externes, déjà codées par d’autre développeurs et que tu peux intégrer à ton projet.
Chaque librairie a ses propres versions et peut ne pas fonctionner avec d’autres librairies ou d’autres versions de librairies. C’est un peu un casse-tête.
Heureusement Composer est là pour gérer lui-même tout ça. Tu lui indique quelle librairie tu souhaites et il te l’installe comme il faut.
Il est fort !
Deuxième chose qu’il te faudra c’est PHP et MySQL. PHP nous permettra de faire tourner notre application, forcément on va la développer en PHP. Et MySQL, bon tu dois savoir à quoi ça sert, c’est pour les bases de données.
Tu peux télécharger PHP et MySQL indépendamment et les mettre sur ton poste mais le plus facile reste d’utiliser un serveur local tel que WAMP, XAMP, laragon, …). Ils embarquent PHP et MySQL. Ils servent aussi de serveur mais dans notre cas, nous n’en n’aurons pas besoin car Symfony met à disposition un client (un petit logiciel) qui fait lui-même serveur. La classe !
Allez c’est parti pour installer Symfony !
Installer Symfony : le client
Avant, lorsque l’on souhaitait créer un projet Symfony, il fallait passer par Composer. Désormais Symfony a développé un client Symfony. C’est-à-dire un petit outil qu’il faut installer sur son poste et qui nous permet de créer des projets Symfony.
Ce client est multifonction. Il ne sert pas juste à créer des projets. Il sert aussi de serveur local. Ce serveur utilisera les versions de PHP et MySQL installées sur ton ordinateur pour fonctionner. C’est pour ça qu’il faut garder WAMP (ou autre) ou avoir une version de PHP et MySQL d’installées.
Le client Symfony nous permettra aussi d’exécuter des commandes.
Ex : symfony console make :controller
La première chose à faire est donc de télécharger et d’installer ce client. Pour cela, c’est assez facile, il suffit de se rendre sur le site de Symfony en cliquant ici : https://symfony.com/download
Selon ton système d’exploitation (Windows, Mac, Lunix), vas sur l’onglet adapté.
Pour Windows, tu as simplement à télécharger l’exécutable et l’installer. Pour les autres plateformes, il faut faire une petite ligne de commande.
Une fois installer, pense à mettre le chemin du client installé en variable d’environnement. De cette façon, tu pourras accéder à la ligne de commande « symfony »
Voilà, tu viens d’installer Symfony sur ton poste. Tu es désormais prêt à créer de nouveaux projets avec.
Créer un projet avec la commande Symfony
Maintenant que l’on a installé Symfony, c’est l’heure de créer notre premier projet.
Pour cela, c’est assez facile. En ligne de commande, rends-toi à l’endroit où tu souhaites créer ton projet (commande « cd »).
Si tu utilisais WAMP (ou équivalent), tu devais forcément mettre tes projets dans le dossier « www ». Avec le serveur Symfony, ce n’est plus la peine. Tu peux le mettre n’importe où.
Ensuite, tu peux exécuter la commande suivante :
symfony new nom_de_ton_projet –full
Cette commande va initialiser ton projet. Symfony vas donc créer un dossier « nom_de_ton_projet » qui contiendra toutes l’arborescence et tous les fichiers de Symfony. Bien sûr le « nom_de_ton_projet » doit être remplacé par le nom que tu souhaites lui donner.
C’est quoi ce –full à la fin ?
Symfony propose deux types de projet :
- Le projet complet (–full) qui permet de créer des applications traditionnelles en utilisant tous les composants de Symfony.
- Le projet « light » qui permet de créer des microservices, ou des API.
La différence réside surtout dans le fait que dans la version « full », Symfony ajoute beaucoup plus de paquets au projet. Tu n’auras donc pas à les ajouter (avec Composer) par la suite.
En soit, rien ne t’empêche de créer un projet « light » et d’y ajouter les paquets nécessaires pour faire une application traditionnelle.
Pour créer un projet de type microservice / API, il faut simplement enlever le « –full » à la fin :
Symfony new nom_de_ton_projet
Si tu as déjà créé des projets Symfony avant que le client Symfony n’apparaisse, tu devais utiliser Composer. Le client de Symfony est simplement une couche supplémentaire de Composer qui rajoute quelques fonctionnalités supplémentaires. Mais le travail derrière reste le même.
Tu auras peut-être remarqué que lorsque tu lance la commande « symfony new … », tu as une indication juste en dessous :
« running composer.phar create-project symfony/website-skeleton »
Symfony lance simplement une commande de Composer.
Pour le projet « –full », c’est le paquet « symfony/website-skeleton » qui est utilisé et pour le projet « light », c’est le paquet « symfony/skeleton »
De cette façon, tu peux aussi créer un projet Symfony avec composer :
- Pour des projets traditionnels : composer create-project symfony/website-skeleton nom_de_ton_projet
- Pour des projets light : composer create-project symfony/skeleton nom_de_ton_projet
C’est quelle version ?
Lorsque tu lance la commande Symfony, si tu ne précises pas de version, le client installe automatiquement la dernière version stable de Symfony.
Si tu souhaites utiliser une autre version il faut simplement le préciser à la fin de la commande :
Symfony new nom_de_ton_projet –version=4.4
De cette manière tu vas créer un projet à la version 4.4 de Symfony
Un tour d’horizon de la structure de Symfony
Lorsque tu as créé ton projet Symfony, tu auras remarqué qu’il y a déjà pas mal de fichiers et dossiers. Je vais t’expliquer rapidement le rôle de chacun.
Public : le dossier public est le point d’entrée de ton application. A l’intérieur de ce dossier, tu vas retrouver le fichier index.php. C’est ici qu’arrivera chaque requête des utilisateurs. Cette requête sera dispatchée dans les différents contrôleurs de ton application pour être traitée. Le contrôleur renverra une réponse HTTP.
C’est aussi dans ce dossier que tu pourras y mettre ton CSS, ton JS, tes images. C’est ce que l’on appelle des « assets »
Src : c’est le cœur de l’application. C’est dans ce dossier que tu vas passer 90% de ton temps. A l’intérieur on y retrouve un dossier « Controller » dans lequel on écrira nos différents contrôleurs. Un dossier « Entity » qui accueillera les modèles de notre application. Le dossier « Repository » lui contiendra les fichiers PHP dans lesquels tu pourras faire des requêtes qui te retourneront une ou des entités.
Il y a aussi un dossier « Form ». C’est lui qui contiendra tous les formulaires. Avec Symfony, les formulaires ne sont pas faits dans le HTML mais avec des classes PHP.
Templates : ce dossier contiendra toutes les vues de ton application. Ces vues utilisent le moteur de template Twig. Twig se base sur le langage HTML et rajoute une couche par-dessus pour pouvoir injecter des variables et des conditions (if, else, for,…)
Bin : contient les binaires. Ce sont des exécutables qui nous permettront de lancer des commandes tout au long du projet. On y retrouve la console et phpunit (pour les tests unitaires).
Config : contient toute la configuration des différentes parties de l’application Symfony. Les fichiers de configuration sont découpés par composants. De cette façon il est plus facile de se balader dans les fichiers et trouver celui que l’on souhaite.
Migrations : ce dossier contiendra nos migrations de base de données. Dès que l’on va modifier nos entités, il faudra modifier notre base de données. Pour cela Symfony génèrera des scripts (SQL ou autre) pour faire évoluer la base de données. Cela permet de gérer les versions de la base de données. De cette manière, nous n’aurons même pas à faire de requête SQL nous-même.
Tests : contiendra les différentes classes de tests que l’on fera dans notre application. Nous pourrons les lancer avec le binaire phpunit.
Translations : contiendra les fichiers de traduction afin de traduire le site ou l’application dans d’autre langue.
Var : contient les logs de Symfony et le cache
Vendor : ce dossier contient toutes les librairies externes (bundle) que l’on va utiliser dans notre application. On a notamment tous les bundles qui composent Symfony. Il est possible de rajouter des librairies externes grâce à Composer. Ces librairies seront référencées dans le fichier composer.json.
Lancer le serveur
Maintenant que l’on a installé Symfony et créé notre projet, il est temps d’afficher notre première page. Et pour ça, il va nous falloir un serveur local.
Comme tu le sais, Symfony est en PHP et le PHP est un langage côté serveur. Il a donc besoin d’un serveur pour fonctionner.
Heureusement grâce au client Symfony, on a un serveur à disposition.
Pour lancer le serveur, ouvre un invité de commande, rends-toi dans le dossier de ton projet grâce à la commande « cd ». Une fois dans ton dossier, lance la commande :
Symfony server:start
Le serveur va se lancer. Tu auras ainsi une URL sur laquelle te rendre pour tester ton application. Généralement c’est https://127.0.0.1:8001.
Le port peut être différent (8000, 8002, …). Le serveur Symfony déterminera lui-même le port à utiliser en fonction de ceux qui sont disponibles.
Les logs s’affichent à la suite. Si tu souhaites que le serveur continue de tourner en arrière-plan mais que la commande te rendre la main, écris la commande :
symfony server:start –d
Le « -d » signifie « deamon ». Cela veut dire que le serveur va tourner en arrière-plan et que tu récupère la main sur ton invité de commande
Si tu as besoin d’afficher les logs, utilise la commande suivante :
Symfony server:log
De cette façon lorsque tu navigueras sur ton application, tu afficheras tous les logs dans ta commande. Tu pourras ainsi débugger plus facilement.
Besoin d’un bundle supplémentaire ?
Il peut arriver que tu aies besoin d’un bundle supplémentaire, une librairie supplémentaire. En effet, il y a des développeurs qui ont déjà développés tout un tas de bundles qui sont top et qu’on a plus qu’à réutiliser. Il en faut pas réinventer la roue.
Pour cela, il va falloir utiliser Composer. La commande pour ajouter un nouveau bundle est la suivante :
symfony composer require xxxxxx/xxxxxxx
xxxxxx/xxxxxxx est bien sûr à remplacer par le nom du bundle. Tu peux aller faire un tour sur le site https://packagist.org/ pour trouver des bundles à ajouter. C’est un des plus gros répertoires de packages. C’est d’ailleurs celui qu’utilise Composer.
Voici un exemple pour ajouter la librairie d’icônes FontAwesome :
symfony composer require fortawesome/font-awesome
Si tu test cet exemple, tu verras qu’une ligne a été rajoutée dans le fichier composer.json, partie « require ». Composer à mis à jour le fichier composer.json avec la version de FontAwesome qu’il juge la plus appropriée.
Pour aller plus loin avec Symfony, j’ai créé une formation complète sur Udemy, tu peux la retrouver en cliquant ici
Installer Symfony : ce qu’il faut retenir
Symfony est l’un des Frameworks les plus utilisés dans le langage PHP. Grâce à sa grosse communauté de développeurs, il propose aujourd’hui des fonctionnalités très poussées qui te permettront de faire tout et n’importe quoi avec.
En revanche, les débuts peuvent être un peu compliqués. Les frameworks sont toujours un peu complexes à appréhender mais sont un vrai atout lorsqu’on les maitrise. Ils permettent de gagner énormément de temps et mettent à disposition des développeurs un certain nombre d’outils très pratiques à utiliser.
Le plus dur c’est le début : comprendre le fonctionnement du framework, l’installer, créer son premier projet, …
Heureusement dans cet article, nous avons vu comment faire tout ça.
Tu peux maintenant te lancer sereinement dans le code de ton nouveau projet !
La FAQ
Symfony est un framework. C’est-à-dire un « cadre de travail » qui fournit une structure à notre projet. Cette structure nous permet d’ajouter des éléments à notre projet en suivant cette structure. Symfony repose sur le modèle MVC (Model View Controller) qui permet de découper le code de façon à ce qu’il reste maintenable et évolutif
Pour Symfony, tu peux utiliser un IDE tel que Visual Studio Code qui est très bien. Tu peux aussi utiliser Eclipse. Si tu souhaites passer sur un IDE payant, je te conseil PhpStorm, extrêmement efficace ! En revanche, je déconseille d’utiliser de simple éditeur de code tel que Notepad++ ou SublimText, leurs fonctionnalités ne sont pas assez poussées.
Les fichiers CSS (et Javascript) peuvent se mettre dans le dossier « public ». Ce dossier est accessible depuis l’extérieur (tout comme doit l’être les fichiers CSS et JavaScript). Tu peux utiliser le bundle « symfony/assetic-bundle » pour gérer tes assets (CSS, JavaScript, image). Tu peux aussi utiliser utiliser la méthode avec Webpack, tu as un tutoriel complet en cliquant ici
Le mieux est d’utiliser la dernière version stable que Symfony propose. Tu peux les retrouver ici : https://symfony.com/releases. Tu bénéficieras ainsi de toute les dernières fonctionnalités de Symfony. Sinon rien ne t’empêche d’utiliser une autre version antérieure.
Les développeurs full stack et les développeurs backend. Symfony repose sur le langage PHP qui est un langage coté serveur. Il est donc plus destiné à des développeurs full et back. De plus, il est souvent utilisé dans les entreprises (de toute taille) car il répond à de nombreux besoins différents.
Si tu ne souhaites pas utiliser le client de Symfony pour créer tes projets, tu peux toujours utiliser composer avec la commande suivante : composer create-project symfony/website-skeleton nom_de_ton_projet