Framework : Symfony ou Zend ?
Bonjour,
Je me pose en ce moment une petite question par rapport à un nouveau projet. Avant que j'aille plus loin, je tiens à dire que je ne connais aucun des deux frameworks correctement, j'ai un peu survoler leur code pour comprendre un peu le fonctionnement d'un framework.
Ce que je voulais savoir, c'est quel est le framework qui me sera le plus utile pour faire notre projet ? Le projet est un site web traitant de l'automobile.Il y aura donc un système de rédaction, un forum pour la communautée, un système d'upload de photo pour les articles, puis peut être un système de blog personnalisé en rapport à notre sujet.
Etant donné que je ne sais pas comment utiliser ces deux frameworks, je voulais savoir qu'elle était la mieux au niveau de la documentation, au niveau de l'explication pour l'utilisation (comme http://www.symfony-project.org/jobeet/1_2/Propel/en/) et de leurs avantages et/ou inconvénients.
Si vous voulez d'autres informations, n'hésitez pas à me les demander.
Merci d'avance.
Réponses apportées à cette discussion
Salut,
Je crois que sur le forum d'un spécialiste de Symfony, je vais laisser parler Emacs ;)
Coté documentation, le Zend Framework est cependant très riche. Mais je crois que la première question à se poser avant tout choix serait plutôt : c'est quoi un framework ? À quoi ça sert ? Et au lieu de formuler une réponse, je crois qu'il serait intéressant que tu nous fasses part de ta vision personnelle : pourquoi penses-tu avoir besoin d'un framework ? Selon toi, comment ça marche (globalement hein, pas dans le détail bien sur, on manquerait de place ici sinon :P ) Partant de là, la réponse sera probablement mieux ciblée.
Et dans le cas où tu choisirais à terme Symfony, tu es à mon avis sur le forum le plus approprié pour trouver une aide pertinente et qualifiée.
Qu'est-ce que pour moi un Framework ?
Et bien, c'est comme une librairie de fonction : les programmeurs ont codé plusieurs Class permettant de poser une bonne fois pour toute le code nécessaire pour faire telle chose. Ainsi, plus besoin de réinventer la roue. C'est surtout ça l'avantage du Framework. Je suppose qu'il ne pourra pas faire tout ce que je souhaite, je devrais mettre les mains dans le cambouie.
Bon, je n'ai peut être pas utilisé les bons mots pour décrire ma vision, mais globalement, c'est ça.
D'ailleurs, il y avait sur le net un site explicant les avantages d'un framework sous l'image d'un gâteau : http://www.biologeek.com/web-frameworks/definition-et-avantages-d-un-framework-web/
Ca reprend un peu ce que je disais juste au-dessus.
Ce qu'il faut savoir c'est qu'un framework sert avant tout à cadrer un développement en offrant au développeur une certaine architecture (organisation des fichiers, conventions de nommage...) et un outillage (abstraction de base de données, ORM, tests unitaires et fonctionnels, génération des formulaires, CRUD, internationalisation...).Un bon framework doit aussi avoir une documentation comme l'a évoqué Cyrano, sinon il ne sert à rien.
Le choix d'un framework est ensuite relativement personnel. Tout dépend de l'affinité que tu as avec l'architecture du framework, les conventions de nommage, l'outillage, sa philosophie générale...
Personnellement, j'ai choisi symfony il y'a un peu plus d'un an pour plusieurs raisons :
- La licence MIT qui permet d'en faire absolument ce que l'on veut (utilisation, modification, revente...),
- Sa riche documentation,
- Sa communauté,
- Sa timeline et roadmap actives,
- Sa pérénité (plus de 3 ans d'existence),
- Son outillage impressionnant comme l'admin generator, la génération de code, les ORMs, l'internationalisation...,
- Le MVC,
- L'intégration des bonnes pratiques de développement et la sécurité,
- Le système de plug-ins,
- L'interface en ligne de commande,
- C'est un outil français :)
Et aujourd'hui, je travaille chez Sensio, la société qui édite le framework symfony. Donc il ne faut pas être étonné si j'évangélise un peu (trop) symfony lol.
Zend Framework est pas mal non plus mais souffre selon de plusieurs faiblesses :
- La verbosité des noms de classes...,
- Des fonctionnalités pas toujours bien implémentées comme le MVC,
- Les composants sont faits mais toute l'implémentation de la logique métier reste à ta charge. Il faut que tu intègres toi même les fonctionnalités offertes par les composants Zend.
- L'architecture globale ne me convenait pas,
- Pas de CRUD,
- Pas de véritable ORM même si on peut très bien ajouter Propel ou Doctrine au ZF,
- Pas d'interface en ligne de commande
Bref, je lui ai trouvé pas mal de contraintes par rapport à symfony d'où mon orientation vers ce framework. Quant aux autres frameworks, ils n'en valent que peu, voire pas du tout la peine. Ils ne sont pas bien documentés, pas assez outillés, pas assez découplés, pas assez pro... et certains comme CakePHP tournent toujours en PHP 4 !
A toi de tester symfony et Zend Framework, puis de choisir celui qui te convient le mieux :)
++
Hugo.
Tout d'abord, merci pour ta réponse détaillée, j'en apprend déjà un peu plus.
*Le choix d'un framework est ensuite relativement personnel. Tout dépend de l'affinité que tu as avec l'architecture du framework, les conventions de nommage, l'outillage, sa philosophie générale... *
Je suis d'accord avec toi, il va falloir que je mette d'avantage mon nez dans le code pour avoir mon propre avis. Mais je voulais d'abord avoir l'avis d'une personne qui code depuis longtemps avec ce framework, certe une opinion objective, mais qui m'intéresse.
Dernière question : que ce soit avec Symfony ou Zend, je peux à peu près tout faire, niveau application, système, script..? Une question bête, mais c'est pour savoir s'il existe des "limites".
Merci encore.
Oups.. j'ai encore oublié de poser une question : je suppose qu'on peut toujours utiliser d'autres bibliothèques en plus d'un framework, comme Moontools, Jquery et autres, non ?
Je sais, c'est une question bête. Normalement, la réponse est oui, car le framework est simplement là pour nous faciliter la tâche. Mais bon, je pose pour le "au cas où".. :p
Merci encore.
Qu'entends-tu par niveau application, système, script ? C'est du PHP donc tu peux faire tout ce qu'il est possible de faire en PHP !
Quand aux librairies Mootools, jQuery... bien sûr puisque c'est du JS ^^ Ca n'a rien à voir avec PHP et le framework. Mais un bon framework comme symfony ou Zend, te permet d'embarquer d'autres librairies PHP comme Propel, Doctrine, PEAR, PHPBB...
Comme je le disais, ce sont des questions vraiment bête, mais bon, j'assume ! :p
- Qu'entends-tu par niveau application, système, script ?*
Je voulais juste savoir si on pouvait tout faire avec un framework.. j'ai encore un peu de mal à imaginer toute son utilité, puisque je n'ai jamais encore essayé.
Par contre, je viens de voir qu'avec Symfony, il y avait des commandes en ligne à faire pour certaines actions.. Je voulais savoir alors si Symfony marchait sur n'importe quel type de serveur, mutualisé ou pas..?
Merci encore pour ces petits détails.
Tout faire ça ne veut rien dire ! Un framework ne fait pas le café ni range ta chambre à ta place. Qu'entends-tu par tout faire ? Sois plus concret, donne des exemples ?
Oui symfony s'utilise en ligne de commande. Quand tu développes en symfony, tu utilises la ligne de commande en local pour t'aider à remplir des tâches. Lorsque ton site est en production sur le serveur distant, tu n'as plus besoin d'utiliser la ligne de commande. symfony peut être utilisé sur du mutualisé si la configuration du serveur est bien faite et permet d'avoir un répertoire hors web. Mais dans l'idéal symfony, comme Zend Framework, ont été développés dans le but d'être utilisés sur des plateformes dédiées.
Petite question de débutant : c'est dur de se mettre au framework? si on a l'habitude d'utiliser php et des petites bases en oo.
2/ Par ou commencer pour apprendre un framework?
Merci
Qu'entends-tu par tout faire ?
Ba, je ne l'ai pas dit explicitement, mais comme tu l'as dit plus haut : "C'est du PHP donc tu peux faire tout ce qu'il est possible de faire en PHP ! "C'est ce que je voulais dire.
Mais dans l'idéal symfony, comme Zend Framework, ont été développés dans le but d'être utilisés sur des plateformes dédiées.
Mmh.. je suis chez Free, mais je ne sais pas où sera hébergé le projet.. Si ça ne marche que sur des serveurs dédiés, je crois que c'est fichu alors.
@JeremyB9 : ça marche sur du mutualisé OVH. Le site dédié au forum PHP que j'ai développé il y'a un mois fonctionne en symfony 1.2 sur le serveur mutualisé d'Apprendre-PHP.
http://www.apprendre-php.com/forum.php
@Saturn1 : ce n'est pas spécialement dur car tu retrouves tous les concepts du langage de programmation (fonctions, POO, variables...) mais c'est déroutant au début car tu dois apprendre comment le framework fonctionne. Tu vas donc devoir apprivoiser l'architecture qu'il t'impose ainsi que les outils qu'il te fournit.
Zend Framework s'apprivoise relativement vite. En 1 semaine ou 2 de pratique quotidienne, tu seras capable de développer tes premières applications. Avec symfony la courbe d'apprentissage est un peu plus longue car la structure du framework est plus complexe. Mais on s'y fait très vite également une fois que l'on a réussi à démarrer avec.
C'est dommage que le framework de Symfony ne marche que sur des serveurs dédiés.. Ils doivent avoir leurs raisons, mais ce sont quand même des utilisateurs en moins.
Ca aurait pu me faire de l'expérience en touchant au Framework pendant ce projet.
Merci en tout cas pour toutes vos réponses, elles m'ont été très utiles. Merci.
Une dernière demande :
tu peux me passer le lien d'un premier tutoriel pour commencer avec symphony?
Car je suis aller voir la doc rapidement... et c'est de l'anglais^^ :D.
Dis moi si les tutoriels sont tous en anglais ?
Merci :)
@saturn1 : Voilà de quoi t'aider à débuter avec symfony en francais:
@JérémyB9 : ca passe sur certains serveurs mutualisés comme ceux d'OVH qui te permettent d'avoir un dossier web et une partie "hors web". symfony peut passer sur d'autres serveurs mutualisés à condition de remanier quelques trucs dans le framework. Ce genre d'outil a vocation a être utiliser sur des serveurs dédiés pour plusieurs raisons :
- Sa mise en place nécessite de toucher à la configuration d'Apache afin de placer certains répertoires hors web pour assurer la sécurité des données. Par exemple, tous les fichiers de configuration, les classes, les contrôleurs... sont placés en dehors de la racine web afin de ne pas pouvoir être atteints par un navigateur web.
- Un framework comme symfony répond à des sites web ayant de fortes contraintes de disponibilité, donc clairement des sites qui n'ont rien à faire sur du mutualisé pour des raisons de performances et de configurabilité.
Bref, symfony est un outil professionnel destiné à la base à réaliser des sites professionnels ayant des besoins de sécurité, de rapidité, de performances, de maintenabilité...
@Saturn1 : Bien que symfony soit un logiciel français, toute sa documentation est exclusivement rédigée en anglais afin de pouvoir toucher le plus de monde possible. Certains membres de la communauté se proposent pour traduire les parties de la documentation les plus intéressantes dans leur langue native. Dans le cas du français, il y'a déjà quelques trucs mais ce n'est pas suffisamment complet. Je t'invite à fouiller dans tout le site de symfony pour obtenir davantage de documentation en français ainsi que sur Internet où tu trouveras des blogs qui en parle en français. Mais dans l'idéal, il faudrait que tu fasses l'effort de comprendre l'anglais pour apprendre plus facilement à utiliser symfony.
++
Hugo.
Merci pour toutes tes précisons. Je verrai avec mon co-équipier sur quel serveur on ira, et ainsi savoir si je pourrai utiliser un framework. Je comprend mieux maintenant pourquoi il est préférable d'avoir un serveur dédié, logique par rapport à tes dires.
Bref, pour moi, le sujet est résolu et je vous remercie pour toutes vos réponses.
@JeremyB9 :je viens de trouver par hasard sur le site officiel de symfony, une liste d'hébergeurs mutualisés qui supportent symfony. Donc si tu es intéressé par un hébergement mutualisé pour ton futur projet symfony, tu peux regarder ici et les comparer :
http://trac.symfony-project.org/wiki/HostsSupportingSymfony
++
Ah, ba merci beaucoup ! Je fais un petit tour pour voir ce qui peut nous intéresser.
Merci.