Aller au menu - Aller au contenu

Icône Symfony2, un framework PHP

Avatar
Mise à jour : 02/05/2012
Difficulté : Intermédiaire Intermédiaire Durée d'étude : 1 heure Creative Commons BY-NC-SA
20 752 visites depuis 7 jours, dont 1 468 sur ce chapitre classé 17/786
Symfony2 est un framework PHP, c'est-à-dire une boite à outils faite en PHP qui a pour but de vous simplifier la vie. Sympa, non ?

Dans ce chapitre, nous allons tout d'abord voir ce qu'est vraiment un framework, car Symfony2 est avant tout un framework comme un autre. Nous verrons ensuite pourquoi Symfony2 sort du lot.
Sommaire du chapitre :
Icône du chapitre
Sommaire Chapitre suivant

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 les intérêts, 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à avancé, hein ? :p
Concrètement, c'est un ensemble de composants qui servent à 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 boite à outils conçue par un ou plusieurs développeurs et à 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 tutoriel !

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 son développement, et lui permet ainsi de se concentrer sur le plus important.

Prenons un exemple concrêt. 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 ainsi 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 à tout 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 part 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, 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 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 codes connues. Ainsi vous pouvez facilement recruter un autre développeur : s'il connait 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 (comme celui que vous lisez !), de l'aide sur les forums, et puis bien sûr les mises à jour du framework. Ces mises à jour sont très importantes : imaginez que vous codiez vous-même 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 ces briques de votre site, qui ne sont pas forcément votre tasse de thé, soient fournies par le framework. A 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éveloppeur attitrés ;
  • Un code qui respecte les standards de programmation ;
  • Un support à long terme garanti et des mises à jour qui ne cassent pas la comptabilité ;
  • 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, tel que Symfony2 justement, il faut également être au courant des dernières nouveautés de PHP. Je pense notamment à la POO et aux namespaces. De plus, connaître certaines bonnes pratiques telles que l'architecture MVC et autres est un plus.

Bref, rien de tout cela ne doit vous effrayer, c'est ce pourquoi vous êtes ici ! 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, convaincu ?


J'espère vous avoir convaincu que, bien entendu, le Pour l'emporte largement sur le Contre.

Si vous êtes prêt à relever le défi aujourd'hui pour être plus productif demain, alors ce tutoriel est fait pour vous. Bonne lecture !

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 :p .

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é exceptionnelle. Aujourd'hui, beaucoup d'entreprises dans le domaine de l'Internet (dont Simple IT !) 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 du nom, que nous étudierons dans ce tutoriel, est sortie en août 2011. Encore jeune, son développement a été fulgurant grâce à une communauté de développeur dévoués. Bien que différent dans sa conception, cette deuxième version est plus rapide et plus souple que la première. Il y a fort à parier que très rapidement, beaucoup d'entreprises s'arracheront les compétences des premiers développeurs Symfony2. Faites-en partie !

Un framework populaire et français


Eh 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 un script open source, il a également été écrit par toute la communauté : beaucoup de Français, mais aussi des développeurs de tout horizon : 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.

Télécharger Symfony2

Obtenir Symfony2


Il existe de nombreux moyens d'obtenir Symfony2. Nous allons voir ici la méthode la plus simple : télécharger la version standard.

Pour cela rien de plus simple. Rendez-vous sur le site de Symfony2, rubrique « Download » : http://symfony.com/download, et téléchargez la version "Symfony Standard (.zip)".

Si vous avez le gestionnaire de version Git installé sur votre ordinateur, vous pouvez prendre la version "without vendors". Les librairies tierces seront ainsi téléchargées via Git en exécutant le script bin/vendors situé dans l'archive. Une fois l'archive extraite, exécutez alors la commande php bin/vendors install. Si vous n'avez pas Git, prenez alors la version simple, avec les vendors, pour avoir toutes les librairies incluses.


Si vous êtes sous Windows, évitez de télécharger l'archive au format .tgz car des problèmes ont été rencontrés avec cette méthode.

Une fois l'archive téléchargée, décompressez les fichiers dans votre répertoire web habituel, par exemple "C:\wamp\www" pour Windows ou "/var/www" pour Linux. Pour la suite du tutoriel, je considérerai que les fichiers sont accessibles à l'URL http://localhost/Symfony.

Vérifier votre configuration de PHP


Symfony2 a quelques contraintes par rapport à votre configuration PHP. Par exemple, il ne tourne que sur la version 5.3.2 ou supérieure de PHP. Pour vérifier si votre environnement est compatible, rendez-vous à l'adresse suivante : http://localhost/Symfony/web/config.php.

Image utilisateur
Mon environnement de travail est compatible avec Symfony2 !


En cas d'incompatibilité (version de PHP notamment), Symfony2 vous demande de régler les problèmes avant de continuer. S'il ne vous propose que des « recommandations », vous pouvez continuer sans problème. Ce sont des points que vous pouvez régler, mais qui sont facultatifs.

Si vous êtes sous Linux, vous devez bien régler les droits sur les répertoires app/cache et app/logs afin que Symfony2 puisse y écrire. Placez-vous dans le répertoire Symfony et videz d'abord ces répertoires :
Code : Console
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 :
Code : Console
sudo chmod +a "www-data 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 les commandes ci-dessus, exécutez les commandes ci-dessous qui n'utilisent pas le chmod +a :
Code : Console
sudo setfacl -R -m u:www-data:rwx -m u:`whoami`:rwx app/cache app/logs
sudo setfacl -dR -m u:www-data:rwx -m u:`whoami`:rwx app/cache app/logs

Enfin, si vous ne pouvez pas utiliser les ACL (utilisés dans les commandes ci-dessus), définissez simplement les droits comme suit :
Code : Console
chmod 777 app/cache
chmod 777 app/logs


Vous pouvez dès à présent exécuter Symfony2, félicitations ! Rendez-vous sur la page http://localhost/Symfony/web/app_dev.php et admirez :

Image utilisateur
La page d'accueil de 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.

Si vous êtes sous Linux 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, et entrez la commande suivante : php -v. Si cette commande vous retourne bien la version de PHP et d'autres informations, c'est tout bon pour vous.

La commande vous affiche une erreur ?


Si vous êtes sous Windows. Votre PHP est bien installé, mais en fait Windows ne sait pas où le trouver, il faut juste le lui dire. Voici la démarche à suivre pour régler ce problème (tiré de la documentation PHP) :
  1. Allez dans la paramètres systèmes avancés (Démarrer > Panneau de configuration > Système et sécurité > Système > Paramètres système avancés) ;
  2. Cliquez sur le bouton "Variables d'environnements..."
  3. Regardez dans le panneau "Variables systèmes"
  4. Trouvez l'entrée Path (vous devriez avoir à faire descendre l'ascenseur pour le trouver)
  5. Double cliquez sur l'entrée Path
  6. Entrez votre répertoire PHP à la fin, sans oublier le point virgule (;) avant. C'est le répertoire dans lequel se trouve le fichier "php.exe". Par exemple ";C:\wamp\bin\php\php5.3"
  7. Confirmez en cliquant sur OK

Vous devez ensuite redémarrer l'invite de commande pour prendre en compte les changements.

Si vous êtes sous Linux. Vérifiez alors votre installation de PHP. Je n'ai pas de recette pour vous ici, essayez une réinstallation depuis le gestionnaire de paquets de votre distribution.

Dans les deux cas, vérifiez après vos manipulations que le problème est bien résolu. Pour cela, exécutez à nouveau la commande php -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 !
Votre environnement est prêt, mais vous devez maintenant apprendre à vous servir de Symfony2. Rendez-vous donc au prochain chapitre pour découvrir l'architecture utilisée par Symfony2 !
Sommaire Chapitre suivant

Partager

40 commentaires pour "Symfony2, un framework PHP"
Note moyenne : 3.75 / 4 (245 votes)
Pseudo Commentaire
Hors ligne molinadiaz # Posté le 02/03/2012 à 05:51:41

Avis : Très bon

Tutoriel très clair :) Merci beaucoup !
 
Hors ligne zéro_un # Posté le 19/04/2012 à 09:17:37 Message supprimé pour le motif suivant : Merci de poster vos problèmes sur le forum, pas ici..
Avatar

Bonjour :)

Merci pour ce tuto

j'ai un problème au niveau de app_dev.php : quand je fais null

j'obtient une page blanche pas de msg d’erreur ni de l’interface de la page :-°

Merci d'avance :)

Un petit bout de code vaut mieux qu'un long discours ! ^^
 
Hors ligne aporte # Posté le 20/05/2012 à 03:43:17

Ce tutoriel est en effet tres bien ;), merci!
Une remarque pour etre pointilleux: pour nous aider a elargir les ACL lors de l'installation de Symfony, tu nous fournis des lignes de commande dans lesquelles apparait ceci "www-data" sans vraiment preciser a quoi il correspond. Du coup, en ne changeant pas ce www-data, le terminal indique l'erreur suivante: "Unable to translate 'www-data' to a UID/GID"
Pourrais-tu STP ajouter une courte phrase pour expliquer a quoi correspond ce "www-data"?

PS: Je pourrais certainement me debrouiller en utilisant les solutions alternatives que tu proposes(meme si getfacl et setfacl ne sont pas dispo sur mac os x) mais je suis curieux sur cette premiere methode
Hors ligne Mons54 # Posté le 24/05/2012 à 04:43:35
On a rien sans rien
Avatar

Salut,

Je suis décidé à me lancer sur symphonie depuis le temps que j'en entend parler. Un pote (professionnel) m'a dit que c'était long et compliqué à maîtriser...

Je code avec MVC et poo. J'espère que ça va m'aider à maîtriser l'outil.

J'ai un petite question, est ce que vous compareriez symphonie pour le php à Jquery pour le js ?

Sinon je vais suivre les cours et mettre des commentaires régulièrement. :)

Edit : Par contre pour l’installation moi sans problème (je viens de le faire) mais bon j'ai php.ini qui est configuré spécialement pour rewitre et MVC donc ce doit être pour ça.
Bon courage à ceux qui galère !

Passionné de sport ? Suivez les Jeux Olympiques de Londres 2012!

http://jo-2012.net
 
Connecté winzou # Posté le 24/05/2012 à 19:16:58
lala
Avatar

Avis : Très bon Modérateurs

Ville : Singapour
Pays : Singapour
Études : Ecole Centrale de Lyon

Salut,

Si tu fais déjà du MVC et que tu maîtrises la POO, alors l'apprentissage de Symfony2 en sera d'autant plus simplifié ;)

Symfony2 est un framework PHP au même titre que jQuery est un framework JS en effet. Cependant Symfony2 va un peu plus loin que jQuery, et impose une certaine structuration du code que jQuery n'impose pas du tout.

Un tutoriel pour débuter avec le framework Symfony2.
Chapitre en beta-test : Déployer son site Symfony2 en production, donnez vos avis !

Je recherche toujours quelqu'un capable de faire des icônes sympas pour les chapitres du tutoriel, contactez-moi, merci !
 

Voir tous les commentaires