Symfony, ou comment coder plus confortablement
Par Contributeur - Publié le
- coder deux fois de suite la même fonction
- refaire la procédure de connexion a la base de données suite à un changement de serveur
- revenir dans votre code x mois après et ne plus rien comprendre
Avec Symfony, vous allez pouvoir oublier tous ces petits soucis !
Un FrameQuoi ?
Un Framework est un environnement de travail, une structure dont on utilise l'arborescence ainsi que la librairie très riche en fonctions plus ou moins utiles. De plus, avec Symfony, et certains autres Frameworks tels Ruby on Rails ou Jelix, des applications sont là pour vous permettre de générer la base de données, les classes de la partie modèle du MVC, l'application, les modules...
En bref, un Framework comme Symfony fait une partie du boulot à votre place, mais ce n'est pas tout. Il essaye aussi de rendre votre projet facilement portable d'un environnement de déploiement à l'autre.
Pourquoi utiliser ce Framework ?
Plusieurs raisons peuvent vous motiver à utiliser ce Framework.
Tout d'abord, utiliser Symfomy rend
votre code mieux organisé
. Symfony utilise une architecture bien particulière, et vous vous devez de vous y conformer ! Chaque type de composant doit être placé dans un répertoire particulier, ce qui fait qu'au final votre projet est bien ordonné. Voici un aperçu de l'organisation de Symfony.- les applications sont placées dans un répertoire
apps/, et sont composés de contrôleurs et de composants de présentation.
- le ou les fichiers css sont dans rangés dans le répertoire
web/css
- les fichiers javascript vont dans
web/js
- les images, etc.
Par conséquent, si vous reveniez sur votre projet après 6 mois d'interruption, vous retrouveriez facilement vos marques. De même, un autre développeur familier du Framework serait en mesure de travailler sur votre code très rapidement.
Une autre bonne raison d'utiliser Symfony est
la virtualisation de la base de données
. Symfony exploite la technologie OpenSource Propel pour vous permettre de construire les classes de vos bases, avec leurs jointures, en deux requêtes. Vous pouvez ainsi accéder aux éléments de la base de données sans écrire de requête SQL. Cela vous permet de vous assurer que votre projet n'est pas dépendant d'un type de base de données particulier.Pour accéder aux données d'une table membre via un id passé en url, vous feriez comme ceci.
$membre = MembrePeer::retrieveByPk($this->getRequestParameter('id'));
//affiche le nom et le prenom
echo $membre->getPrenom() . ' ' . $membre->getNom();
De même, pour effectuer un update de la table membre, vous feriez comme ceci.
$membre= MembrePeer::retrieveByPk($this->getRequestParameter('id'));
//on met a jour le nom
$membre->setNom('Dupont');
//de même avec le prénom
$membre->setPrenom('Dupont');
Symfony utilise les fameux "getters/setters", chers aux programmeurs Java.
On remarquera que pour récupérer des valeurs provenant de formulaires, on utilise la méthode
Et ce, quelque soit la méthode utilisée dans le formulaire (GET ou POST).
Sinon, un autre avantage de Symfony est
la génération des fichiers CRUD (Create, read, update, delete)
. Continuons avec notre exemple de table membre. Grâce à la ligne de commande suivante :Symfony va vous générer les fichiers :
- actions/actions.class.php
- templates/createSuccess.php
- templates/editSuccess.php
- templates/listSuccess.php
- templates/showSuccess.php
En vous rendant à l'adresse adresse_de_votre_projet/membre/, vous verrez se lister les champs de la table membre, ainsi que des liens pour éditer, créer et afficher les enregistrements.
Enfin, dernier atout de ce Framework :
la simplification des URL
. Avec Symfony, les URLs ressemblent àMon_projet/membre/create, plutôt qu'à
index.php?pg=mb&action=create. L'url rewriting est géré en natif, et paramétrable via un fichier de configuration. Il est même possible d'utiliser un suffixe comme .html pour un meilleur référencement. De plus, vous n'avez pas à vous demander comment linker tel ou tel module. Une fonction le fait pour vous.
Paroles, paroles et paroles...
Puisque quelques images valent bien quelques centaines des mots, vous pouvez télécharger un screencast dédié à l'utilisation de Symfony sur le site officiel de Symfony.
Oui, je le veux ...
Vous êtes convaincus et vous souhaitez vous y mettre ? Rien de plus facile. Tout d'abord, passez sur le site officiel du projet. Vous y trouverez toutes sortes d'informations quant à l'installation et l'utilisation de Symfony.
http://www.symfony-project.com/
En fait, on peut installer Symfony de deux façon : en utilisant la Sandbox ou Pear.
La Sandbox
Elle se présente comme une solution tout-en-un. Elle comprend les applications nécessaires à la génération du code, et l'arborescence de base d'un site.
Avantages :
- Mettez la Sandbox, ainsi que le fichiers fichiers d'installation de MAMP, LAMP et WAMP sur une clé USB, et vous avez un véritable environnement de travail nomade.
- Pas de véritable installation. Il suffit de tout dézipper dans le répertoire ad hoc de votre serveur.
Inconvénient :
- Le poids (pour chaque site vous aurez une copie des applications de Symfony)
Installation PEAR
Au début j'étais réticent à utiliser cette alternative, puis en voyant la simplicité d'utilisation et d'installation, j'ai opté pour cette solution.
Une fois votre PATH mis à jour de façon à inclure le dossier 'bin' du répertoire de votre installation de php 5, il suffit de quelques commandes dans votre terminal pour installer Symfony. Ensuite, il vous suffira de vous placer dans le bon répertoire et de taper dans le terminal
Ce qui générera l'intégralité de l'arborescence du nouveau site.
Avantages :
- Symfony peut être mise à jour directement via PEAR.
- Le poids. Les applications de Symfony ne sont qu'à un seul endroit.
Inconvénient :
- La mise à jour du PATH, et l'installation, rebuteront les moins geek d'entre vous.
Les instructions complètes d'installation sont disponibles à cette adresse :
http://www.symfony-project.com/content/download.html
Et le SAV ?
Symfony, bien qu'étant un projet français, dispose d'un forum et d'une documentation en anglais. Toutefois, un groupe de discussion en français existe sur Google. Vous pouvez le trouver à cette adresse :
http://groups.google.com/group/symfony-fr?lnk=li
N'hésitez pas à vous y inscrire !
Conclusion
Symfony est un vrai régal pour les programmeurs. Il rend le PHP beaucoup plus confortable, l'ajax plus abordable, l'optimisation du référencement (url rewriting) plus simple, l'internationalisation (i18n) triviale, etc. C'est un vrai régal pour les programmeurs.
Aprés avoir étudié plusieurs Frameworks dont Prado, Jelix et Zend, je préfère Symfony pour les raisons suivantes : quelques lignes de commandes génèrent une partie du code, une bonne documentation, une grande facilité de prise en main, et le yml,
Faites-vous votre propre opinion en téléchargeant la Sandbox !
Vu que j'utilise Symfony quasiment au quotidien sur Windows et Mac (installation PEAR), je peux répondre à la majorité de vos questions dans les réactions.