• 30 heures
  • Facile

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

Ce cours existe en livre papier.

course.header.alt.is_certifying

Vous pouvez être accompagné et mentoré par un professeur particulier par visioconférence sur ce cours.

J'ai tout compris !

Mis à jour le 04/09/2017

Symfony2, un framework PHP

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Vous savez déjà faire des sites Internet ? Vous maîtrisez votre code, mais n'êtes pas totalement satisfait ? Vous avez trop souvent l'impression de réinventer la roue ?

Alors ce cours est fait pour vous !

Symfony2 est un puissant framework qui va vous permettre de réaliser des sites complexes rapidement, mais de façon structurée et avec un code clair et maintenable. En un mot : le paradis du développeur !

Ce cours est destiné aux débutants de Symfony2. Vous n'avez besoin d'aucune notion sur les frameworks pour l'aborder, car nous allons les découvrir ensemble, pas à pas. Cependant, il est fortement conseillé :

Alors, vous avez décidé de vous lancer dans Symfony2 ? Parfait, vous ne le regretterez pas ! Tout au long de ce cours, nous apprendrons à utiliser ce framework, et vous comprendrez petit à petit la puissance de cet outil. Mais tout d'abord, commençons par les bases, et voyons précisément quels sont les objectifs et les limites d'un framework tel que Symfony2.

Dans ce chapitre, nous allons découvrir pourquoi Symfony2 est un bon choix pour votre application web. Une boîte à outils faite en PHP qui a pour but de vous simplifier la vie, c'est toujours sympa, non ? Allons-y !

Qu'est-ce qu'un framework ?

L'objectif d'un framework

L'objectif de ce chapitre n'est pas de vous fournir toutes les clés pour concevoir un framework, mais suffisamment pour pouvoir en utiliser un. On exposera rapidement l'intérêt, les avantages et les inconvénients de l'utilisation d'un tel outil.

Définition

Le mot « framework » provient de l'anglais « frame » qui veut dire « cadre » en français, et « work » qui signifie « travail ». Littéralement, c'est donc un « cadre de travail ». Vous voilà bien avancés, hein ? :p Concrètement, c'est un ensemble de composants qui sert à créer les fondations, l'architecture et les grandes lignes d'un logiciel. Il existe des centaines de frameworks couvrant la plupart des langages de programmation. Ils sont destinés au développement de sites web ou bien à la conception de logiciels.

Un framework est une boîte à outils conçue par un ou plusieurs développeurs à destination d'autres développeurs. Contrairement à certains scripts tels que WordPress, Dotclear ou autres, un framework n'est pas utilisable tel quel. Il n'est pas fait pour être utilisé par les utilisateurs finaux. Le développeur qui se sert d'un framework a encore du boulot à fournir, d'où ce cours !

Objectif d'un framework

L'objectif premier d'un framework est d'améliorer la productivité des développeurs qui l'utilisent. Plutôt sympa, non ? Souvent organisé en différents composants, un framework offre la possibilité au développeur final d'utiliser tel ou tel composant pour lui faciliter le développement, et lui permet ainsi de se concentrer sur le plus important.

Prenons un exemple concret. Il existe dans Symfony2 un composant qui gère les formulaires HTML : leur affichage, leur validation, etc. Le développeur qui l'utilise se concentre sur l'essentiel dans son application : chaque formulaire effectue une action, et c'est cette action qui est importante, pas les formulaires. Étendez ce principe à toute une application ou tout un site Internet, et vous comprenez l'intérêt d'un framework ! Autrement dit, le framework s'occupe de la forme et permet au développeur de se concentrer sur le fond.

Pesons le pour et le contre

Comme tout bon développeur, lorsqu'on veut utiliser un nouvel outil, on doit en peser le pour et le contre pour être sûr de faire le bon choix !

Les pour

L'avantage premier est donc, on vient de le voir, le gain en productivité. Mais il en existe bien d'autres ! On peut les classer en plusieurs catégories : le code, le travail et la communauté.

Tout d'abord, un framework va vous aider à réaliser un « bon code ». Par « bon code », j'entends qu'il vous incite, de par sa propre architecture, à bien organiser votre code. Et un code bien organisé est un code facilement maintenable et évolutif ! De plus, un framework offre des briques prêtes à être utilisées (le composant Formulaire de Symfony2 par exemple), ce qui vous évite de réinventer la roue, et surtout qui vous permet d'utiliser des briques puissantes et éprouvées. En effet, ces briques sont développées par des équipes de développeurs chevronnés, elles sont donc très flexibles et très robustes. Vous économisez ainsi des heures de développement !

Ensuite, un framework améliore la façon dont vous travaillez. En effet, dans le cas d'un site Internet, vous travaillez souvent avec d'autres développeurs PHP et un designer. Un framework vous aide doublement dans ce travail en équipe. D'une part, un framework utilise presque toujours l'architecture MVC ; on en reparlera, mais sachez pour le moment que c'est une façon d'organiser son code qui sépare le code PHP du code HTML. Ainsi, votre designer peut travailler sur des fichiers différents des vôtres, fini les problèmes d'édition simultanée d'un même fichier ! D'autre part, un framework a une structure et des conventions de code connues. Ainsi, vous pouvez facilement recruter un autre développeur : s'il connaît déjà le framework en question, il s'intégrera très rapidement au projet.

Enfin, le dernier avantage est la communauté soutenant chaque framework. C'est elle qui fournit les tutoriaux ou les cours (comme celui que vous lisez !), de l'aide sur les forums, et bien sûr les mises à jour du framework. Ces mises à jour sont très importantes : imaginez que vous codiez vous-mêmes tout ce qui est connexion utilisateur, session, moteur de templates, etc. Comme il est impossible de coder sans bugs, vous devriez logiquement corriger chaque bug déclaré sur votre code. Maintenant, imaginez que toutes les briques de votre site, qui ne sont pas forcément votre tasse de thé, soient fournies par le framework. À chaque fois que vous ou les milliers d'autres utilisateurs du framework trouverez un bug, les développeurs et la communauté s'occuperont de le corriger, et vous n'aurez plus qu'à suivre les mises à jour. Un vrai paradis !

Il existe plein d'autres avantages que je ne vais pas vous détailler, mais un framework, c'est aussi :

  • une communauté active qui utilise le framework et qui contribue en retour ;

  • une documentation de qualité et régulièrement mise à jour ;

  • un code source maintenu par des développeurs attitrés ;

  • un code qui respecte les standards de programmation ;

  • un support à long terme garanti et des mises à jour qui ne cassent pas la compatibilité ;

  • etc.

Les contre

Vous vous en doutez, avec autant d'avantages il y a forcément des inconvénients. Et bien, figurez-vous qu'il n'y en a pas tant que ça !

S'il ne fallait en citer qu'un, cela serait évidemment la courbe d'apprentissage qui est plus élevée. En effet, pour maîtriser un framework, il faut un temps d'apprentissage non négligeable. Chaque brique qui compose un framework a sa complexité propre qu'il vous faudra appréhender.

Notez également que pour les frameworks les plus récents, tels que Symfony2 justement, il faut également être au courant des dernières nouveautés de PHP. Je pense notamment à la programmation orientée objet (par Mathieu Nebra) et aux namespaces (par Victor Thuillier). De plus, connaître certaines bonnes pratiques telles que l'architecture MVC est un plus.

Mais rien de tout cela ne doit vous effrayer ! Voyez l'apprentissage d'un framework comme un investissement : il y a un certain effort à fournir au début, mais les résultats se récoltent ensuite sur le long terme !

Alors, convaincus ?

J'espère vous avoir convaincus que les pour l'emportent largement sur les contre. Si vous êtes prêts à relever le défi aujourd'hui pour être plus productifs demain, alors ce cours est fait pour vous !

Qu'est-ce que Symfony2 ?

Un framework

Symfony2 est donc un framework PHP. Bien sûr, il en existe d'autres ; pour ne citer que les plus connus : Zend Framework, CodeIgniter, CakePHP, etc. Le choix d'un framework est assez personnel, et doit être adapté au projet engagé. Sans vouloir prêcher pour ma paroisse, Symfony2 est l'un des plus flexibles et des plus puissants.

Un framework populaire

Symfony est très populaire. C'est un des frameworks les plus utilisés dans le monde, notamment dans les entreprises. Il est utilisé par Dailymotion par exemple ! La première version de Symfony est sortie en 2005 et est aujourd'hui toujours très utilisée. Cela lui apporte un retour d'expérience et une notoriété exceptionnels. Aujourd'hui, beaucoup d'entreprises dans le domaine de l'Internet (dont OpenClassrooms !) recrutent des développeurs capables de travailler sous ce framework. Ces développeurs pourront ainsi se greffer aux projets de l'entreprise très rapidement, car ils en connaîtront déjà les grandes lignes. C'est un atout si vous souhaitez travailler dans ce domaine. ;)

La deuxième version, que nous étudierons dans ce cours, est sortie en août 2011. Elle est encore jeune, son développement a été fulgurant grâce à une communauté de développeurs dévoués. Bien que différente dans sa conception, cette deuxième version est plus rapide et plus souple que la première. Déjà, beaucoup d'entreprises s'arrachent les compétences des développeurs Symfony2. Faites-en partie !

Un framework populaire et français

Et oui, Symfony2, l'un des meilleurs frameworks PHP au monde, est un framework français ! Il est édité par la société SensioLabs, dont le créateur est Fabien Potencier. Mais Symfony2 étant open source, il a également été écrit par toute la communauté : beaucoup de Français, mais aussi des développeurs de tous horizons : Europe, États-Unis, etc. C'est grâce au talent de Fabien et à la générosité de la communauté que Symfony2 a vu le jour.

Qu'est-il possible de faire avec Symfony ?

Avec Symfony, comme avec beaucoup de frameworks PHP, vous n'êtes limités que par votre imagination ! En effet, il est possible de tout faire : ce n'est pas le framework qui vous posera des limites, celui-ci ne met en place qu'un cadre de travail. Libre à vous d'utiliser ce cadre comme bon vous semble ! Je vous ai parlé de Dailymotion, un site de partage de vidéos ; mais vous pouvez également créer un site e-commerce, comme je l'ai fait avec Caissin ; ou encore un site plus complexe tel qu'OpenClassrooms qui tourne également sur Symfony2.

C'est donc l'une des forces de Symfony2 : il vous permettra de créer le site internet de vos rêves en vous fournissant tous les outils nécessaires pour y arriver avec succès.

Télécharger Symfony2

Vérifier l'installation de PHP en console

Nous aurons parfois besoin d'exécuter des commandes PHP via la console, pour générer du code ou gérer la base de données. Ce sont des commandes qui vont nous faire gagner du temps (toujours le même objectif !), vérifions donc que PHP est bien disponible en console. Rassurez-vous, je vous indiquerai toujours pas à pas comment les utiliser.

Si vous êtes sous Linux ou Mac, vous ne devriez pas avoir de soucis, PHP est bien disponible en console. Si vous êtes sous Windows, rien n'est sûr. Dans tous les cas, vérifiez-le en ouvrant l'invite de commandes pour Windows, ou le terminal pour Linux.

Sous Windows

Lancez l'invite de commandes :

Menu Démarrer > Programmes > Accessoires > Invite de commandes.

Une fenêtre semblable à la figure suivante devrait apparaître.

La console Windows
La console Windows

Puis exécutez la commande suivante :

C:\Users\winzou> php -v​
PHP 5.5.12 (cli) (built: Apr 30 2014 11:20:55)​
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
 with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies
Sous Linux et Mac

Ouvrez le terminal et exécutez la même commande :

winzou@laptop:~$ php -v
Si tout va bien

Si cette commande vous retourne bien la version de PHP et d'autres informations, c'est tout bon pour vous. Profitez-en pour vérifier votre version de PHP, nous aurons besoin ici de la version 5.4 au minimum. Si vous avez PHP 5.3, pensez à vous mettre à jour ;)

En cas d'erreur

La commande vous affiche une erreur ?

Si vous êtes sous Windows, votre PHP est sûrement bien installé mais Windows ne sait pas où le trouver, il faut juste le lui dire. Voici la démarche à suivre pour régler ce problème :

  1. Allez dans les paramètres système avancés (Démarrer > Panneau de configuration > Système et sécurité > Système > Paramètres système avancés) ;

  2. Cliquez sur le boutonVariables d'environnement…  ;

  3. Regardez dans le panneauVariables système  ;

  4. Trouvez l'entréePath  (vous devriez avoir à faire descendre l'ascenseur pour le trouver) ;

  5. Double-cliquez sur l'entréePath ;

  6. Entrez votre répertoire PHP à la fin, sans oublier le point-virgule ";" auparavant. C'est le répertoire dans lequel se trouve le fichier php.exe. Par exemple;C:\wamp\bin\php\php5.5.12   ;

  7. Confirmez en cliquant sur OK. Vous devez ensuite redémarrer l'invite de commandes pour prendre en compte les changements.

Si vous êtes sous Linux, vérifiez votre installation de PHP. Vous devez notamment avoir le paquet php5-cli, qui est la version console de PHP.

Dans les deux cas, vérifiez après vos manipulations que le problème est bien résolu. Pour cela, exécutez à nouveau la commandephp -v. Elle devrait alors vous afficher la version de PHP.

Et voilà, votre poste de travail est maintenant opérationnel pour développer avec Symfony2 !

Obtenir Symfony2

Il existe de nombreux moyens d'obtenir Symfony2. Nous allons voir ici la méthode recommandée : le Symfony Installer. Il s'agit d'un petit fichier PHP (un package PHAR en réalité) à télécharger puis exécuter sur votre PC.

Pour le télécharger, rendez-vous à l'adresse suivante : symfony.com/installer. Cela va vous télécharger un fichiersymfony.phar , que vous devez déplacer dans votre répertoire web habituel, par exempleC:\wamp\www  pour Windows ou/var/www  pour Linux. 

Ce fichier permet d'exécuter plusieurs commandes, mais la seule qui va nous intéresser pour l'instant est la commande "new", qui permet de créer un nouveau projet Symfony en partant de zéro, pratique !

Puis placez-vous dans le répertoire où vous avez placé le fichiersymfony.phar, en utilisant la commande cd (je vous laisse adapter la commande si vous êtes sous Linux ou Mac) :

Microsoft Windows [version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Tous droits réservés.

C:\Users\winzou> cd ../../wamp/www

C:\wamp\www> _

Maintenant, exécutons la commandephp symfony.phar new Symfony pour créer un nouveau projet dans le répertoire "Symfony" :

C:\wamp\www> php symfony.phar new Symfony

Downloading Symfony...

4.97 B/4.97 MB ==================================> 100%

Preparing project...

OK Symfony 2.7.2 was successfully installed. Now you can:

     * Change your current directory to D:\www\Symfony

     * Configure your application in app/config/parameters.yml file.

     * Run your application:
          1. Execute the php app/console server:run command.
          2. Browse to the http://localhost:8000 URL.

     * Read the documentation at http://symfony.com/doc

C:\wamp\www> _

Et voilà ! Vous venez de télécharger tout le nécessaire pour faire tourner un projet Symfony dans le répertoireC:\wamp\www\Symfony  (ou/var/www/Symfony  sur Linux).

Pour la suite du cours, je considérerai que les fichiers sont accessibles à l'URLhttp://localhost/Symfony. Je vous recommande d'avoir la même adresse, car je ferai ce genre de liens tout au long du cours. ;)

Droits d'accès

Je fais un petit aparté pour les lecteurs travaillant sous Linux (sous Windows pas de soucis, vous pouvez passer votre chemin). Symfony2 a besoin d'écrire dans quelques répertoires, il faut donc bien régler les droits sur les répertoiresapp/cacheetapp/logs. Pour cela, placez-vous dans le répertoireSymfonyet videz d'abord ces répertoires :

rm -rf app/cache/*
rm -rf app/logs/*

Ensuite, si votre distribution supporte le chmod+a, exécutez ces commandes pour définir les bons droits :

HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1`

sudo chmod +a "$HTTPDUSER allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs

Si vous rencontrez une erreur avec ces commandes (le chmod +a n'est pas disponible partout), exécutez les commandes suivantes, qui n'utilisent pas le chmod+a:

HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1`

sudo setfacl -R -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX app/cache app/logs
sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX app/cache app/logs

Enfin, si vous ne pouvez pas utiliser les ACL (utilisés dans les commandes précédentes), définissez simplement les droits comme suit :

chmod 777 -R app/cache
chmod 777 -R app/logs

Voilà, fin de l'aparté.

Vous pouvez dès à présent exécuter Symfony2, félicitations ! Rendez-vous sur la pagehttp://localhost/Symfony/web/app_dev.php/, vous devriez avoir quelque chose ressemblant à la figure suivante.

Une page d'exemple de Symfony2
Une page d'exemple de Symfony2

 

En résumé

  • Le mot « framework » signifie « cadre de travail » en français.

  • L'objectif principal d'un framework est d'améliorer la productivité des développeurs qui l'utilisent.

  • Contrairement aux CMS, un framework est destiné à des développeurs, et non à des novices en informatique.

  • L'apprentissage d'un framework est un investissement : il y a un certain effort à fournir au début, mais les résultats se récoltent ensuite sur le long terme !

  • Symfony2 est un framework PHP très populaire, français, et très utilisé dans le milieu des entreprises.

Exemple de certificat de réussite
Exemple de certificat de réussite