Jump to content
Sign in to follow this  
siriu

Conseils pour choisir CakePhp ou Symphony

Rate this topic

Recommended Posts

Bonjour,

Développeur junior, ne connaissant pas encore les frameworks Cake Php et Symphony dont j'entend souvent parler, je pense utiliser un des deux dans le cadre d'un projet. N'ayant pas beaucoup de temps pour comparer ces deux solutions, j'aurai besoin de vos avis.

Ce projet consiste :

  • Quelques pages statiques (10 ~ 15)
  • Quelques formulaires
  • Affichager d'articles publiés depuis un backend
  • Une zone membre pour télécharger / consulter des fichiers que nous aurons mis à la disposition de chaque membre

(Je n'ai pas envie d'utiliser un CMS voulant réaliser du sur mesure en respectant le design pattern MVC)

Merci d'avance pour vos conseils.

Share this post


Link to post
Share on other sites

Salut Siriu,

Si vraiment, comme tu le dis, tu veux réaliser du sur mesure, alors rien ne vaut un bon codage à la main. Surtout pour un projet aussi basique : pourquoi utiliser de grosses machineries comme Cake ou Symphony ? D'autant que tu précises que tu es un développeur junior, donc en plein apprentissage : tu auras tout à gagner à partir d'une page blanche.

Quelques formulaires, un espace membre, non seulement ce n'est pas la mer à boire, mais surtout, c'est quelque chose qu'on retrouve sur quasiment tous les sites, donc autant savoir le faire tout seul une bonne fois pour toutes :)

Le temps de prendre en main des frameworks comme Cake ou Symphony, ce sera aussi long, voire plus, que de coder tout le site avec Notepad. Et si jamais ça te prend plus de temps, ce sera quand même du temps de gagné pour les futurs projets puisque tu auras acquis des compétences de base en php. Et puis, quand on fait tout soi-même, on maîtrise 100% du projet. Le faire évoluer devient un jeu d'enfant car on sait directement par quel bout s'y prendre. Sans parler de la consommation souvent démesurée de ces framworks. Sans oublier les mises à jour obligatoires dès que ces frameworks changent de version, etc, etc...

Les gros frameworks sont supers pour les gros projets. Mais pour les petits trucs, autant choisir une solution adaptée, à plus forte raison quand on souhaite progresser :) Ce n'est que mon humble avis bien sûr.

Share this post


Link to post
Share on other sites

Tout a fait d'accord avec Ernestine, par experience, j'ai pus constater que l'usage des framework rend dépendant et fainéant, mais le problème c'est que le jour ou tu tombe sur une spécificité non couverte par le framework, tu auras du mal à t'en sortir, parce que c'est souvent le framework qui "aura réflechi" à ta place.

Autre point que je reproche aux framework, et surtout à leur développeurs, c'est leur système de gestion des bases de données, c'est fait pour être le plus générique possible, et bien souvent une table => une classe modèle, et bien cela je n'approuve pas, car nombre de développeurs prennent la solution de facilité, et lors de requête un peu complexe font une ribambelle de requête la ou cela peut être fait en une seule (oui c'est sûr faut connaitre un minimum le SQL et arriver a faire des jointures correctes). Sur certains projets, cela peut devenir rapidement des gouffres en ressources serveur.

Tout cela pour dire, les framework cela peut être bien, quand c'est utilisé intelligemment (ce qui est malheureusement pas souvent le cas).

  • Upvote 1

Share this post


Link to post
Share on other sites

Tout à fait d'accord avec Ernestine et Dadou.

De plus il est tout à fait possible de respecter le MVC en développant tout depuis une feuille blanche.

++

Patrick

Share this post


Link to post
Share on other sites

Tout à fait d'accord avec les autres. Commence par te faire la main, en faisant tout toi même. Le jour ou tu sentiras le besoin de mieux organiser ton code, de moins te répéter, c'est que le moment sera venu de s'intéresser aux frameworks.

Share this post


Link to post
Share on other sites

Pour une fois qu'on parle de CakePHP, je me permets d'intervenir.

L'apprentissage d'un framework pour un développeur d'applications est une obligation.

J'entends par développeur une personne qui va avoir pour principale occupation professionnelle l'écriture de code PHP ou autre langage.

Le monde des sites web est un peu à part.

Pourquoi pas un framework ?

Si vous regardez dans les autres langages, il est maintenant inconcevable de faire sans.

Quelqu'un fait-il encore ses appels Ajax sans jQuery ou Prototype ?

Fait-on du Java sans connaître un seul framework (struts, spring etc...) ?

Python a django, Ruby a Rails, même en CSS vous avez des frameworks...

Profiter de l'expérience des autres

Chaque développeur se construit son propre framework, ses petites habitudes, ses bibliothèques, ses modèles de script ou sa méthodologie

Utiliser un framework PHP, c'est bénéficier de l'expérience acquise par des dizaines de développeur.

Avec mon unique cervelle, je n'imagine pas un jour lutter.

Progression pédagogique

Effectivement, c'est le gros problème, faut-il apprendre à faire du vélo pour aller plus vite et plus loin ou continuer à courir ?

Quelles sont les connaissances minimum requises ?

Pour bénéficier pleinement de l'apport de CakePHP, il vaut mieux avoir déjà codé une application PHP / MySql avec authentification et sécurisation minimum.

Contenu technique d'un framework

L'architecture proposée par les frameworks, MVC, abstraction de la base de données (DBAL), mapping Relationnel-Objet (ORM) suppose une compréhension minimum en programmation orientée objet (POO) et les design pattern. Le découpage de l'application en couches (Métier, Coordination, Présentation) est déjà un premier pas. MVC, en POO est le suivant.

Ces architectures sont issues d'années d'expérience sur l'ensemble du cycle de vie d'une application.

Ce cycle comprend notamment l'analyse, le développement, le déploiement, la recette et surtout la maintenance.

Parmi les surprises qui peuvent arriver à long terme :

- je veux changer de base de données (heureusement pdo est là)

- plutôt que d'afficher le solde de mon forfait sur une page web PHP, je voudrais le recevoir par SMS, faut-il réécrire le calcul pour les SMS ?

Si oui, comment on fait si la règle de calcul change ?

- finalement, ce serait bien d'afficher aussi ça sur ma freebox

- le prestataire a disparu, je comprends rien au code. (principal risque du framework maison ou code spaghetti).

J'espère ne pas avoir été trop bavard, mais j'adore CakePHP.

Share this post


Link to post
Share on other sites

L'apprentissage d'un framework pour un développeur d'applications est une obligation.

Cette affirmation est totalement fausse on peut très bien faire sans. Investir dans l'apprentissage d'un framework nécessite pas mal de temps, et ce quelque soit le framework, du coup une autre problématique est à prendre en compte : le framework est il suffisamment pérenne pour être maintenu suffisamment longtemps pour que cet investissement en temps soit rentable. Actuellement, cela fait environs 1 an et demi que je bosse quasi exclusivement pour le même client, l'idée de l'usage de framework à été émise, mais le temps d'apprentissage à été un frein pour le client, et ce dernier ne souhaite pas changer d'équipe de développeur (pour une équipe maîtrisant un framework), l'équipe actuelle arrivant à fournir les résultats escompté dans les délais impartis qui sont pourtant relativement courts.

Python a django, Ruby a Rails, même en CSS vous avez des frameworks...

Outch, non les framework CSS sont à éviter comme la peste, c'est une horreur sans nom ces trucs. C'est du code de feignasse qui génère un code des plus pourris

Chaque développeur se construit son propre framework, ses petites habitudes, ses bibliothèques, ses modèles de script ou sa méthodologie

Utiliser un framework PHP, c'est bénéficier de l'expérience acquise par des dizaines de développeur.

Avec mon unique cervelle, je n'imagine pas un jour lutter.

Je ne le nie pas, et c'est bien pour cela que l'on s'inspire tout de même des frameworks existants pour nos développements

Progression pédagogiqueEffectivement, c'est le gros problème, faut-il apprendre à faire du vélo pour aller plus vite et plus loin ou continuer à courir ?

Déjà savoir marcher ce serait pas mal, j'ai rencontré trop de développeurs "framework" addict, qui sorti du framework avaient du mal à déclarer et à traiter un simple tableau. Et bien pour moi, ce ne sont pas des vrai développeurs, il y a un manque de connaissance "bas niveau".

L'architecture proposée par les frameworks, MVC, abstraction de la base de données (DBAL), mapping Relationnel-Objet (ORM) suppose une compréhension minimum en programmation orientée objet (POO) et les design pattern. Le découpage de l'application en couches (Métier, Coordination, Présentation) est déjà un premier pas. MVC, en POO est le suivant.

Je le répète, la manière dont fonctionnent les framework avec l'abstraction de la base de données ( je n'en vois pas trop l'intérêt, il y a PDO pour cela, et c'est natif php), et le mapping Relationnel-Objet incite trop à ne pas créer les requêtes correctement, si je demande à l'expert base de données avec qui je bosse ce qui pense des requêtes générés par la plupart des développeurs utilisant ORM, il va me demander si je me moque de lui.

Share this post


Link to post
Share on other sites

Merci pour toutes ces réponses, j'ai bien compris tous les arguments.

En fait, je sais très bien faire ce site en procédural, j'ai plus de mal en objet, je comprend bien la syntaxe, la philosophie, mais je n'ai jamais réalisé un site en objet, idem pour organiser en MVC. c'est pour ça que je voulais faire mes classes en partant d'un framework pour qu'il m'aide dans l'organisation et apprehender mieux la façon de faire.

De plus lorsque je consulte les offres d'emplois, Symphony revient très fréquemment, un peu moins CakePHP mais j'ai déjà vu des offres demandant de connaitre ce framework. Bon je vais prendre un peu de temps de réfléxion avant d'attaquer ce petit site ;)

Share this post


Link to post
Share on other sites

Bonjour,

je me suis posé la même question il y a qq années... c'est justement apres quelques semaines de developpement cakePHP que j'ai lu ceci: http://talks.php.net/show/froscon08/ (c'est sorti en meme temps que je codais)

Bien qu'à priori plus "sexy", en terme de perfs, cakePHP était à la traine derrière tous les autres. J'ai finalement opté pour zend Framework (plus une architecture modulaire qu'un framework, mais crois moi, c'est du solide!)

Share this post


Link to post
Share on other sites

Cake est facile à prendre en main si tu as l'habitude des framework, symfony un peu plus particulier.

L'apprentissage d'un framework est également un obligation pour un dev selon moi (quel que soit ce framework, sachant qu'on passe "assez" facilement d'un à un autre, particulièrement si l'un est symfony). Pourquoi ? Si dans une boite un codeur s'en va, j'ai pas envie d'aller fouiller dans son code perso, quand bien même est-il organisé et soigné. Après c'est une philosophie, mais je suis de l'avis de pluriels.

Pour un petit projet, tu as codeigniter qui est certainement le framework php le plus simple à prendre en main qui soit, mais il a inévitablement des carences (webservices, vérification, ORM...). Sinon que ce soit cake, symfony ou zend, j'adhère.

Share this post


Link to post
Share on other sites

Par rapport au projet cité en introduction, un framework est carrément surdimensionné.

Après, si c'est pour faire une exercice de style en développement pourquoi pas, mais ce n'est pas une démarche saine. Le développeur doit s'adapter au cahier des charges.

Ne pas vouloir un CMS par simple caprice de développeur est un drôle de raisonnement.

Share this post


Link to post
Share on other sites

Bonsoir à nouveau,

Je suis bien entendu d'accord avec vous, si on se limite au seul besoin "simple" énoncé ci-dessus, sortir l'artillerie pour une fourmi, il y a des chances que ça marche, mais c'est un peu sur-dimensionné. De la même manière, un CMS ou une boutique en ligne vont plus facilement répondre au besoin du client et ne demandent pas non plus l'apprentissage d'un framework. Ils réclament plutôt l'apprentissage de la personnalisation de l'outil choisi.

Les tendances lourdes autour de PHP

- Les frameworks

- l'optimisation de la performance

- industrialisation des développements

- outillage

- audit et qualité de code

Pour rappel, le programme du forum PHP 2010

Et si on parlait d'informatique en général ?

Les frameworks PHP, fortement inspirés de Rails et / ou malheureusement de Java, sont une matérialisation (loin d'être ultime) de l'expérience issue de presque 40 ans d'informatique. Cette expérience est issue d'erreurs et d'échecs qui ont fait avancer l'informatique. L'informatique de gestion représente le plus gros marché du développement d'applications et c'est là que se positionnent les SSII et plus habituellement les plateformes comme Java et .Net. Utiliser un framework PHP, c'est montrer que PHP a également sa place en entreprise.

Sites Web vs. Informatique de gestion

Nos applications Web sont un sous-ensemble de ce vaste marché de l'informatique de gestion. (certains diront même applications périphériques ou peu stratégiques) D'un côté, on peut s'étonner de voir des SSII tenter de conquérir Internet en faisant des sites web. D'un autre côté, les pure-players PHP ont récoltés les succès sur Internet et se tournent maintenant vers les entreprises.Ces deux populations sont amenées à échanger et progresser ensemble avec PHP comme point d'accroche.

Je consulte les offres d'emplois, Symfony revient très fréquemment

Effectivement, les frameworks PHP sont devenus une grammaire commune aux deux univers.

Les pure-players les ont adoptés même pour les sites Internet.

Les SSII ont fait rentrer dans les entreprises les frameworks PHP.

Développeur junior

Si tu veux t'ouvrir un maximum d'opportunités, alors lance toi sur un framework.

Je n'imagine même pas un développeur Java qui annonce d'emblée :je ne connais pas struts, ni spring, ni hibernate...

Mais comme l'on précisé les autres intervenants, un framework simplifie le travail, encore faut-il que tu saches par toi-même ce qu'est le travail avec PHP.

Share this post


Link to post
Share on other sites

Bonsoir,

Je travaille à l'aide du Framework Zend dans une grande entreprise Française et interviens sur des projets assez volumineux. Je ne pourrais plus travailler sans framework, même pour des petits projets. C'est sur que pour créer un blog ou un site vitrine, je me tournerais vers des CMS mais pour le cas de projets spécifiques petit ou gros, je n’hésiterais pas.

Mes raisons sont multiples et reprennent également ce qui à déjà été dit, mais je souhaite rajouter certaines choses:


  1. - Ne pas réinventer la roue, cela peut prendre peut-être plus de temps à mettre en place au début, mais durant les phases de développement on y gagne. Par exemple, je n’écris plus mes requêtes mais j'appelle directement les méthodes pré-construite qui me permet d'être sur que les données seront bien enregistrées/récupérées et avec un minimum de sécurité.
  2. - La portabilité du code, c'est quand même appréciable de ne plus " trop " se soucier de l'environnement final. De même pour la base de données, le Framework se charge de réaliser les requêtes qui vont bien en fonction du SGBD ( Oracle, MySQL, LDAP ... ).
  3. - Avoir un code propre et structuré par le Framework qui imposent ses règles (ex: nommage des variables et classes, ORM ...). Utile pour développer en équipe ou faire évoluer l'application.
  4. - Pouvoir utiliser les librairies facilement et ne pas aller les chercher sur le net. Je parle ici de la génération de fichier Excel, PDF ou encore l'utilisation de SOAP ou l'envoi de Mail, CRUD ...

Je rejoins principalement l'avis de SStephane et pluriels sur ce coup la. Un Framework c'est pour moi essentiel pour vendre au client un produit de qualité et évolutif comportant un minimum de sécurité.

C'est pourquoi, même pour un petit projet je choisirai de le développer à l'aide d'un Framework. Car on ne sait jamais comment va évoluer le besoin du client... Et je serai bien content de pouvoir m'appuyer sur un Framework un ou deux ans après avoir livré une 1ère version, pas besoin de se souvenir de comment ça tourne ...

Je le répète, la manière dont fonctionnent les framework avec l'abstraction de la base de données ( je n'en vois pas trop l'intérêt, il y a PDO pour cela, et c'est natif php), et le mapping Relationnel-Objet incite trop à ne pas créer les requêtes correctement, si je demande à l'expert base de données avec qui je bosse ce qui pense des requêtes générés par la plupart des développeurs utilisant ORM, il va me demander si je me moque de lui.

On est d'accord ? Le Framework est la en support, ce n'est pas lui qui va faire l'analyse et la conception de l'application, c'est lui qui décide qu'elles classes vont être présentes et qu'elles méthodes seront protégées ou non. Le FW est la pour organiser et proposer les choses. Les classes de bases sont génériques. Au développeur ensuite de réaliser ses propres classes Métier et d'adapter les génériques.

Pour revenir au sujet, CakePHP est plus "userFriendly" que Symfony. Plus rapide et facile à prendre en main, pas de doute.

Edited by Damien_

Share this post


Link to post
Share on other sites

Je déterre le sujet si d'autres personnes tombent dessus. Gérant d'une société de développement web, je confirme que la candidature d'un développeur PHP qui ne connait aucun FW a peu de chance d'aboutir à un rdv. Conseiller à un jeune de rester au PHP "pur" est une aberration, aujourd'hui en 2011 ! C'est l'évolution naturelle de cette technologie. Pour un client ou un chef de projet, rien de plus lourd que le développeur PHP qui sait tout, qui a tout fait à sa sauce et que personne ne peut reprendre. Un FW met tout le monde (plus ou moins) dans le même moule.

Mettre dans la balance le temps d'apprentissage ? C'est une blague ? Qui peut se permettre dans l'informatique de ne pas être en constant apprentissage et remettre en cause chaque année ses compétences ?

Faudrait pas mélanger confort personnel et flemme de se mettre à niveau, et efficacité ou facilité de collaboration. Quand je lis qu'un FW rend les développeurs flemmards.... :smartass:

Je développe du web dynamique depuis 1998, d'abord ASP puis PHP, tout a évolué si vite...CSS, JS (et ses FW). Pourquoi ne pas continuer sur Dreanmeaver tant qu'on y est ?

J'ai vu autour de moi des développeurs PHP talentueux que j'ai poussé vers Cake, y aller avec réticence, perdre du temps sur leur premier projet, puis celui-ci terminé avouer que finalement...difficile de retourner aux anciens projets en PHP "pur" et que leur façon de développer a été révolutionnée. Bon et pour être franc, pour l'un d'eux, il s'est tourné vers Sympfony2 après Cake, bon ça c'est pour ne pas donner l'impression que je ne jure que par Cake.

CakePHP permet (et certainement les autres FW) de débrayer et faire du PHP standard à n'importe quel moment, on est jamais coincé !

Ensuite la taille du projet n'est pas vraiment un facteur : une fois appris, un FW facilite tellement TOUT qu'on gagne du temps même sur un projet de 15 pages.

Bref voila, si un jeune padawan lit ce post "Passe au FW si tu veux trouver un (bon) boulot ! Passe à l'objet si tu veux être plus efficace !"

Après on ne peut pas nier que cela nempêche pas de connaitre le PHP pur pour comprendre ce qu'il se passe derrière et avoir une bonne culture générale.

Je sais que je vais en froisser certains, c'est mon opinion personnelle et professionnelle, elle s'adresse aux débutants qui se posent la question sur la nécessite de se mettre sur un ou plusieurs frameworks.

Share this post


Link to post
Share on other sites

As tu bien lus mes interventions, pour moi un framework peut être bien quand c'est utilisé intelligemment, or avec 100% des devs que j'ai rencontrés qui ne jurent que par les framework cela n'a jamais été le cas, et au final, leur code est d'une lourdeur sans nom, sans compter le nombre de requêtes à la BDD qui se multiplient.

J'ai eu le cas d'un dev dont le résultat à l'affichage était très lent, on s'est demandé pourquoi, on a donc décidé de faire un benchmark sur ses requête, on a dénombré plus de 300 requêtes à la BDD pour l'affichage d'une page, on a repris son code, et on a optimisé son code : plus que 4 requête, le temps d'affichage s'en est grandement ressenti.

Le gars en question était habitué aux ORM des Frameworks, il a développé ses requêtes de la même manière, et franchement, au niveau traitement base de données, c'est vraiment pourris comme système.

Personnellement, je n'engagerais plus des gars qui ne bossent qu'avec des frameworks, les précédents avec qui j'ai bossés m'en ont dégoûté à leur manière de travailler justement, a toujours vouloir faire modifier les specs pour que cela entre dans ce que sais faire le Framework, à ne plus être capable de travailler du PHP, parce qu'ils ne le connaissent plus les bases du PHP.

Le jour ou je rencontrerais des dev qui utilisent correctement et intelligemment un Framework, je changerais probablement d'avis, mais pour l'instant, cela n'a pas été le cas.

Et le temps d'apprentissage est une vrai contrainte, le client à des délais, tu dois les respecter, le client ne sera pas d'accord pour te laisser le temps d'apprendre un nouveau framework. Je bosse la plupart du temps en clientèle, le client paye à la journée, et si il te vois peiner sur des points d'intégration d'un framework, il ne va pas être très content. Lui s'en fiche si c'est mieux ou pas, lui il te paye à la journée, et pour lui tu perds du temps.

Un débutant ne doit surtout pas commencer par un framework, mais avoir une bonne connaissance du PHP

Share this post


Link to post
Share on other sites

Je comprends et partage ton avis. Que ce soit en php "pur" ou en framework, il faut faire du travail propre et savoir l'optimiser.

Un bon développeur FW sait ce qu'il se passe derrière et peu ensuite optimiser ce qui peut l'être.

Cela concerne d'une manière générale toutes les façons de coder, et se caractérise peut-être plus facilement en FW.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...