Mac4Ever MacGameZone Gadget O'Mac Refurb-Store Mac-LAN : Jouez ! Forum : ...
icon
Vendredi 10 Novembre 2006

Symfony, ou comment coder plus confortablement

Creation > Programmation
Symfony, ou comment coder plus confortablement
Si vous codez en PHP depuis un moment, vous connaissez probablement la version 5 du langage et sa programmation orientée objet relativement inspirée de java. Et il vous est sûrement arrivé de rencontrer ce genre de situations :

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


//on sélectionne l'objet par sa clé primaire (Pk: Primary Key)
$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.


//on sélectionne l'objet que l'on veut modifier
$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


$value = $this->getRequestParameter('le_nom_du_champ');


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 propel-generate-crud frontend membre Membre


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.


echo link_to("Créer un membre","membre/create");


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


symfony init-project mon_projet


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.

@ mika (contributeur)


Les réactions à cet article
Témoignages et avis....
  • Le 18/11/2006, 22:27@ applemac : Super !

    Bon article :)
    Par contre, je ne pense pas avoir besoin des tels outils. Mais sites en php sont déjà bien rangés, et facilement modifiables (poo, templates).

    Par contre, pour les projet à plusieurs codeurs, ça donne quoi ?
  • Le 18/11/2006, 23:54@ Phénix : Et les performances ?

    Généralement, "plus facile à coder" veut aussi dire "moins performant"... Je dis ça sans avoir testé, mais si la programmation devient "plus facile", elle devient peut-être aussi "moins efficace".

    J'attends l'avis des testeurs ^^
  • Le 19/11/2006, 11:05@ mika : Reponse de bibi

    applemac > pour la programmation a plusieurs pas de soucis: le site se construit autour d'une structure

    Appli
    -module 1
    -action 1.1
    -action 1.2
    -module 2
    ...

    Donc pas de soucis a coder a plusieurs, chacun fait son module dans son coin, il est appelable facilement avec un lien du type Ton_url/module_de_toto/action

    Phénix > pour l'utiliser, oui il est performant pour les projets, pas pour un hello world :)
    note: un element que je n'ai pas abordé ici, est la notion de cache de l'appli, c'est a dire que symfony génère a partir des fichiers de conf yml, des objets... des autres fichiers php pour optimiser les performances au maximum :)
  • Le 19/11/2006, 13:35@ Guy-Philippe : Kayuko utilise le framework Jelix

    Après avoir effectué différent test sur les différents framework, et surtout pour une question de performance, notre choix pour notre comparateur de prix Kayuko s’est porté sur Jelix.

    http://www.kayuko.com/blog/2006/11/08/64-kayuko-nouvelle-version-est-arrive
  • Le 19/11/2006, 14:19@ mika : Comme le bon vin...

    Guy-Philippe> tu as trouvé symfony en mode prod (bcp de changements entre le mode prod et dev au niveau perfs) avec le cache activé.... plus lent que jelix ?

    Un truc qui m'embete avec jelix, c'est la modelisation de la base de donnée, avec symfony, un fichier yml, 3 commandes d'affilés et on a notre table en BDD + les classes de nos tables. Avec jelix faut se taper les creation de table ("create table...") pourquoi ne pas incorporer un propel ou Doctrine dans jelix ? peut etre pour la prochaine version ?

    Sinon dans http://www.jelix.org/articles/tutoriel/config-base, le lien vers l'utilisation DAO (qui m'interesse) est cassé :(

    Les liens DAO: http://www.jelix.org/articles/tutoriel/utiliser-dao
    et formulaire: http://www.jelix.org/articles/tutoriel/formulaire-de-news
    ne marchent pas :(

    Mais sinon, je continuerai a observer jelix, je ne suis pas fermé a l'utilisation d'autres framework, du moment qu'ils font au moins ca:
    -separation modele, vue, controlleur (MVC)
    -virtualise l'acces en base de donnée via des objets (permettant du jour au lendemain de changer de base)
    -gère la securité tout seul
    -url simplifiées
    -cache
    -documentation
    -modeliseur de BDD (dans les deux sens)
    -un generateur de code (applis, modules, BDD, securité...)
  • Le 19/11/2006, 14:35@ SaZeOd : Super

    Merci pour l'info sur ce framework! Je suis un inconditionel de php, et j'avais été touché dans mon orgeuil par Ruby On Rail. Qu'a cela ne tienne! je vais donc essayer ce framework php, voir un peu tout ca. Merci bcp pour l'info.
  • Le 19/11/2006, 14:38@ nautilebleu : nautilebleu

    Niveau perfs, pas mal de gens ont un peu peur de Propel, la partie qui gère la base de données façon objet. Des benchs sur le tests de symfony semblaient montrer d'ailleurs que Symfony est beaucoup moins performants que Ror lui même complètement largué par Django.

    Ceci dit, l'adoption récente par Yahoo! de Symfony pour son outils de bookmarks sociaux lève cette crainte. Yahoo! bookmarks gère quand même 12 millions d'utilisateurs !

    Pour la gestion à plusieurs, Symfony invite pas mal à utiliser un SCM tels que subversion, idéal pour le dév à plusieurs !
  • Le 19/11/2006, 14:40@ Guy-Philippe : Jelix version optimisée !

    Je ne suis pas le développeur de Kayuko, mais je sais que notre chef de projet allait s'orienter vers symphony mais au dernier moment a préféré Jelix. De très gros sites portent leurs sites sous ce framework. Une version Optimized spécial serveur de prod est en cours de développement également.

    Voir l'article du créateur de Jelix Laurent Jouanneau
    http://www.ljouanneau.com/blog/2006/11/08/612-kayuko-powered-by-jelix

    N'hésite pas à leur signaler sur leur forum tes remarques ;)
  • Le 19/11/2006, 21:04@ beben : coté perf pas de soucis

    Juste pour ceux qui se sont posé des questions de perfs, juste pour signaler que le dernier site yahoo : yahoo bookmarks est développer sur ... symfony :)
    D'autre part le nombres de participants au projet ne cesse de croitre et le niveau des participants est très surprenant les idées fusent et les évolutions sont rapide (parfois trop). Enfin faite un tour sur la partie documentation, énorme maintenant version par version et en plus aussi fournis sur le wiki, le forum, le livre, la newsletter !!!

    http://linuxfr.org/2006/11/01/21559.html
  • Le 20/11/2006, 16:21@ Mad : Magnifique

    Je l'ai étudié il y a peu.
    Il est effectivement impressionnant !
    Seul bémol : Tellement complet qu'il faut la semaine pour le maitriser. Mais ça vaut le coup.
  • Le 20/11/2006, 21:39@ jeremy : @Magnifique

    J'ai 13 ans et je travail sur un mac que mon père m'a offert à noël dernier.
    Je trouve qu'une semaine tu exagères parceque j'ai passé deux jours à pour faire mon premier site en rails puis un troisème pour créer un autre site et bien maitiser l'application.
    Bon c'était trois jours complets c'est vrai, certainement que de ton coté tu y a passé une semaine mais tu ne code que le soir aprés ton boulot.
  • Le 21/11/2006, 21:47@ mika : Petite notes

    Salut a tous, une chose a rajouter
    Pour pouvoir utiliser les fichiers yml, commencez par verifier en faisant un symfony -T la présence de deux lignes "propel-convert-yml-shema" et "propel-convert-xml-shema"
    Si vous insallez via pear,
    installer avec "pear install symfony/symfony-beta"
    et pour la sandbox, telechargez la version alpha
    C'est tout :)
  • Le 03/12/2006, 12:05@ Antheor : symfony et flash

    et quid de l'utilisation avec amfphp ?
    (cakephp propose déjà quelque chose).
  • Le 31/12/2006, 14:49@ mika : symfony et flash

    "et quid de l'utilisation avec amfphp ?"
    > Je ne sais pas, pour repondre a cette question il vaudrait mieux demander sur le groupe symfony-fr
  • Le 22/01/2007, 16:16@ amsmams : Ok pour symfony

    Je cherche depuis quelques jour le framework php le plus complet. Après avoir lu plusieurs sujets, pour quelqu'un qui a déja prog
    grammé avec RoR je pense que je vais me lancer sur Symfony... Je ferais mais retours d'ici peu
  • Le 26/01/2007, 10:40@ Isuka : Modifier le PATH ?

    J'ai installé symfony via PEAR mais j'ai quelques problème. Dans le terminal la commande symfony n'est pas trouvé, apparemment parce que mon PATH n'est pas bien configuré. J'utilise MAMP pour Php 5. Etant débutant sous Mac OS X, je voulais savoir comment modifier mon PATH pour cibler le repertoire Php 5 de mon installation MAMP. Merci d'avance.
  • Le 28/01/2007, 22:47@ mika : Path

    dans terminal:
    export PATH=/Applications/Mamp/bin/php5/bin:$PATH

    il faut ensuite renommer ton dossier php en php_off dans /usr/bin/
  • Le 26/02/2007, 22:06@ naud : Pb de PATH sous ACOSX avec MAMP

    Merci pour ce dernier tip !! J'étais carrément bloqué pour exécuter du php5 en ligne de commande. JE vais pouvoir enchainer sur le reste du tuto symfony . Merci encore !!
  • Le 30/05/2007, 23:36@ hafida : securise code mes dossiers

    j'ai un dossier qui contient beaucoup de fichiers et je veut lui faire un code pour interdir laccession
  • Le 07/06/2007, 14:33@ Amsmams : De retour...

    Salut mika,

    Ce la fait 5 mois maintenant que j'ai lu ton article et ai décidé de me lancer sur symfony.
    Je dois dire que je me suis pas trompé car c'est un framework magnifique. J'ai utilisé la sandbox pour faire des développements car l'installation de pear ne marchait pas.

    Je te félicite à nouveau pour ton travail car tu fait partie des gens qui m'ont pousser à choisir symfony.
    La je dois former des petits programmeurs (bac +2) sans expérience de développement en php, mais je pense qu'il pourra s'adapter à symfony.

    A un de ces jours pour les retours sur cet expérience.
  • Le 22/08/2007, 15:55@ RoflCopter : Hey !

    Bon article =)
    Je ne vais pas tarder a me lancer sur symfony mais une question demeure: est-il possible d'interfacer Symfony avec FLASH ?
  • Le 18/09/2007, 18:03@ e-mazarine : developpeur synfony

    Bonjour,

    Je recherche un développeur freelance maitrisant synfony pour une mission de 15 jours à compter du 24 Septembre

    Cdt
  • Le 21/10/2007, 16:03@ hira : remerciement > mica

    Bonjour,

    depuis quelque temps je cherche une façon pour monter mon projet en php. finalement, je suis tombé sur ton article sur symfony. je t'en remercie bcp.

    cordialement,
  • Le 21/10/2007, 17:47@ kenji : intéressant :

    Je fais un peu de programmation en php et cet outils me semble très intéressant !

    merci !
  • Le 15/11/2007, 15:46@ Lucas : Rédaction de l'article

    Bonjour,

    Je m'appelle Łukasz Bartoszewicz et je représente le magazine PHP Solutions http://www.phpsolmag.org/fr

    PHP Solutions est un magazine international pour tous ceux qui s'intéressent à la programmation en PHP et à la création d'applications Web. C'est le seul magazine consacré entièrement au langage PHP sur le marché français. Nous travaillons avec des meilleurs experts qui présentent seulement les techniques et les solutions pratiques.

    Nous serions très heureux de pouvoir coopérer avec vous en sachant que vous êtes un expert en PHP. Je voudrais vous proposer de rédiger un ou plusieurs articles sur Symfony. Dans le prochain numéro de PHP nous voudrions présenter Symfony à nos lecteurs. En échange vous recevez une publicité gratuite sur une page A4 ou l'abonnement pro de notre magazine. Une édition de L'ABONNEMENT.PRO concerne 12 mois ce qui fait 6 éditions suivantes de notre magazine.


    Je reste à votre disposition,


    Cordialement,

    Łukasz Bartoszewicz,
    Rédaction PHP Solutions Magazine,
    tél:+33 170 610 717
    http://www.phpsolmag.org/fr
  • Le 10/01/2008, 11:07@ jzik : Recherche expert Symfony

    Bonjour,

    Je suis le webmaster de www.jzik.fr.

    Une importante campagne de pub se prépare pour ce site développé Avec Sympfony.

    Je recherche un Freelance pour une mission de quelques jours.

    Objectif : Optimisation globale de l'application Symfony et du serveur, optimisation du code si nécessaire.

    En résumé, faire que ce site soit au maximum de ces capacités.

    Contact 06 09 11 59 81 -

    Mission urgente.
Donnez votre avis
Réagissez à cet article...
 
Si vous cherchez de l'aide ou si vous avez une question à poser, ne réagissez pas ici ! Redirigez-vous vers le forum !
Pseudo/Nom : Email (sera protégé contre le Spam) :
Titre :
Réaction :
Recopiez le code de l'image ci-contre :
Rubriques
  • humeurcreationmateriel
  • logicielsjeuxmacos