Framework or not Framework

Aujourd'hui je voulais vous parler des frameworks PHP et de la raison qu'il y a derrière le choix de l'utilisation d'un framework ou non. Le but ici ne sera pas de faire de l'évangélisation pure et simple, mais plutôt de donner mon point de vue et d'éclaircir les développeurs qui se poseraient encore des questions sur l'utilisation d'un framework.

Stop les tuto CakePHP c dla merde ! on veux du PHP Brut ça sert à rien les framework

C'est le genre de phrase typique que je vois de plus en plus dans les commentaires des vidéos. Ce type de message est toujours rigolo sachant que ces personnes utilisent déjà un framework sans s'en rendre compte.

Woot !? J'utilise déjà un framework ?

Même si vous codez en procédural ou en POO vous ne le savez pas mais vous utiliser déjà un framework. En effet au fur et à mesure de vos projets vous allez rencontrer des fonctions de plus en plus similaires et, à moins d'être masochiste, vous vous créerez vos propres fonctions à réutiliser. Ainsi, vous vous construisez une "librairie" d'outils et ainsi, sans vous en rendre compte, vous créez votre propre framework.

Mon code je l'aime, pourquoi utiliser le code d'un autre ?

Donc là vous vous dites sûrement "ben mon code que j'ai créé me va, pourquoi utiliser un framework". Lorsque vous utilisez vos librairies vous êtes beaucoup plus productif. Et de manière générale vous gagnez de plus en plus de temps à chaque projet. Maintenant imaginez des centaines de développeurs qui mettent en commun toutes leurs librairies et vous obtenez le principal intérêt d'un framework Open Source. Avoir un code testé et gérant un maximum de cas qui vous permettra de coder tous vos sites beaucoup plus rapidement (une fois le framework bien assimilé).

Les frameworks ouverts utilisent tous la même structure, la structure MVC (Model View Controller) qui est une structure éprouvée qui vous permet de séparer la partie présentation de la partie logique. Effectivement, cette méthode peut paraitre trop complexe au premier abord mais elle vous permet d'avoir un code plus propre et beaucoup plus simple à debuguer par la suite.

Enfin le dernier atout d'un framework c'est le travail en équipe. En effet, si vous travaillez à plusieurs sur un même framework c'est l'assurance que tout le monde code en suivant les mêmes conventions. Si votre projet utilise symfony 2 par exemple, vous savez qu'un dev Symfony 2 sera capable de travailler sur le code et comprendre le votre dès le premier jour. En revanche si vous utilisez votre propre framework le temps d'adaptation peut être plus long, et on prend le risque que chaque nouveau développeur rende la structure de moins en moins stable.

framework != Performances

L'aspect le plus décrié des framework reste les performances. Même si la plupart des frameworks n'incluent pas "trop" de librairies en se basant sur le principe du lazy loading, ils s'avèrent forcément plus gourmands qu'un code PHP Brut. Les performances peuvent être améliorée au fur et à mesure de la compréhension du fonctionnement du framework. Par exemple, sur CakePHP il sera impératif dès les premières lignes de limiter la récursivité de vos Model sous peine de voir le système faire des dizaines de LEFT JOIN non désirées.

Il y a une grosse partie optimisation à faire avant d'incriminer les frameworks à proprement parler (mise en place d'un système de Cache, Load Balancing…). On trouve des exemples de site à très très haut traffic qui utilisent des frameworks réputés "lents" et qui s'en sortent très bien. La preuve avec cette Conférence du développeur de YouPorn (SFW) qui explique comment le site arrive à survivre à 300 000 requêtes/s et plus de 100 Millions de pages vues avec Symfony 2.

D'une manière plus générale si vous arrivez à des proportions où le code PHP devient limitant c'est que vous pouvez commencer à investir dans une structure serveur plus robuste.

Ok je suis convaincu mais quel framework choisir ?

Cette question revient aussi très souvent et tout le monde essaie de trouver une réponse unique à grand coup d'argument et de benchmark foireux mais il n'y a pas selon moi un framework ULTIME. En effet, chaque framework propose sa vision des choses et sa façon de coder. Par exemple :

  • CakePHP se base sur la syntaxe/logique de RubyOnRail avec des conventions strictes pour écrire moins de code.
  • Symfony 2 utilise le "tout module" avec un code réutilisable au maximum.
  • Laravel propose un système de Facades pour proposer un code reposant sur des classes statiques (servant de façade à des singleton ou des objets).

Je pense que le choix du framework est avant tout une question de goût, à vous de voir la façon de fonctionner de chaque framework et celle qui vous semble la plus naturelle. Cependant certains autres élément sont à prendre en compte dans certains cas :

  • La communauté, un framework avec une grosse communauté c'est l'assurance de trouver des réponses en cas de problème. Si vous utilisez un framework utilisé par 10 développeurs vous risquez de galérer en cas de problème.
  • La version de PHP supportée, attention à prendre un framework qui va fonctionner sur votre configuration serveur. Si vous n'avez pas d'impératif côté serveur un framework ne supportant que PHP 5.3+ (ou 5.4+) est une bonne chose car cela veut dire qu'il utilise les dernières fonctionnalités de PHP
  • La fréquence des mises à jours. Alors là il y a un juste milieu à trouver. Il faut un framework qui soit mis à jour mais pas trop :D. Si les changements de versions majeures sont trop rapides il vous sera difficile de trouver des ressources sur la version que vous utilisez. Un framework rarement mis à jour peut contenir des bugs et des problèmes qui ne sont pas résolus rapidement.
  • L'état du marché, si votre optique est de trouver du travail avec les compétences que vous êtes en train de développer, choisir un framework demandé par le marché est une bonne stratégie (comparer sur des sites comme RemixJobs). Par exemple en France, Symfony 2 et Zend sont pas mal répandus.

Si avec ce choix vous ne trouvez pas votre bonheur :)

Ok mais pourquoi toi tu as choisi CakePHP ?

Alors si vous avez lu tous mes arguments vous vous demandez peut être pourquoi j'utilise CakePHP comme framework. Dans mon cas CakePHP est le premier framework PHP sur lequel j'ai travaillé (un professeur me l'a présenté pendant mes années de DUT) et depuis je n'ai jamais été limité par les fonctions, du coup je n'ai pas ressenti le besoin de passer sur un autre framework.

Malgré tout, j'ai testé un peu d'autres frameworks pour me faire une idée de ce qui se faisait ailleurs mais je n'ai jamais été totalement satisfait par les options proposées (dur d'oublier son premier amour, on compare toujours :)).

  • Symfony 2 m'intéressait car très répandu mais j'ai beaucoup de mal à accrocher au système du "tout bundle" et je trouve le code un peu effrayant au premier abord.
  • Laravel devient de plus en plus "hype" en ce moment donc dur de passer à côté. La syntaxe et la structure du code m'a vraiment plue, en revanche la fréquence des versions (une version prévue par an) m'effraie un peu pour la maintenance des sites.

Conclusion

Selon moi l'utilisation d'un framework pour la création de projet Web est indispensable et je ne m'imagine pas pouvoir créer une application sans en utiliser un. Après il est tout à fait envisageable de se créer un framework perso en inclueant seulement les fonctionnalités que l'on souhaite mais il faut alors réfléchir à l'interêt d'une telle démarche et voir si c'est rentable sur le long terme surtout si d'autres développeurs doivent intervenir sur le projet.


88 Commentaires

Cb5d23b6e46053a3fc636548085c7760?s=200&r=pg&d=mm
mathistador, 09-08-2014 16:30:50 - Répondre

SebSeb, je ne suis pas d'accord,
D'un coté PHP est un putain de langage il faut le voir comme ça, de nombreux sites sont développer en PHP, Facebook, Wikipedia, la POO est une magie du PHP je pense que chaque développeur PHP devrait l'utiliser.

Un framework est dure à prendre en main certe, mais je pense qu'il ne faut pas se focalisé sur " Lequel est le plus utiliser ? "
Mais plutot sur le quel tu preferes.

Personnellement moi c'est Symfony2 et CodeIgniter mais je développe beaucoup en POO pure ce qui m'aide pour mes débuts en Java avec J2E.

073598757e079de2371c458937a0edea?s=200&r=pg&d=mm
SebSeB, 05-08-2014 17:42:02 - Répondre

Perso j'ai tous simplement viré PHP qu'on m'a vendu révolutionnaire par rapport a du java ou .net. Au finale t'a une usine a gaz que seule des geeks loins du monde réel comprenne, des trucs immintenable FrameWork ou pas.... Bref le PHP et le libre c'est de la machine a fric pour SSII.....

9665d2ac069abe7db86d29b92367f1a3?s=200&r=pg&d=mm
amys94fr, 28-04-2014 11:57:53 - Répondre

Quelqu'un utilise Yii ici ???

194ec3d6c7f600e38e334c65b3d3bd01?s=200&r=pg&d=mm
Sumbang, 03-07-2014 19:44:49 - Répondre

Oui, j'utilise Yii Framework !!

A61035066d5edcafdb5e869621d15111?s=200&r=pg&d=mm
Abdellah Rahim, 27-04-2014 17:22:31 - Répondre

Merci

11105
barbuslex, 05-03-2014 18:40:13 - Répondre

Laravel <3

Deec0063a539da4396a34f176222c1c9?s=200&r=pg&d=mm
mika, 11-02-2014 21:39:33 - Répondre

Pour faire des CRUD en 2 clics, regardez du coté du mkframework (disponible dans les exemples du projet github de grafikart)

Une chose à ne pas négliger avec les frameworks c'est la sécurité: XSS, XSRF, sql injection et nullByte

2c509b9a2abbb1edbf306928ef475b56?s=200&r=pg&d=mm
nico_ad, 10-02-2014 14:06:05 - Répondre

Salut,

"Stop les tuto CakePHP c dla merde ! on veux du PHP Brut ça sert à rien les framework"

C est moi qui est dit ca ? tsss tsss

C est bien de citer ce type de réaction, mais je voudrais un peu développer pour comprendre comment on peut arriver à ce type de réponse.

Alors j'ai bientôt 40 ans, je suis développeur PHP depuis 2000, ai commencé à coder en php3 , puis en 4 , et vu se succéder tout un tas de techno phorum, phpBB, phpnuke, mango, joomla, drupal, oscommerce, prestashop... j'ai bossé souvent seul , puis avec une petite équipe de 2 à 4 développeurs.

depuis le temps que je code des sites j'ai bien entendu organisé mon code en classes réutilisées sur plusieurs projets : des galeries d images, un moteur de template,des helpers de formulaires, une gestion de panier pour le ecommerce, une classe de login / session utilisateur , un mailer, un ORM, une surcouche pour les api facebook ou google +, des helpers pour faire des backoffices (basé sur ExtJS). je fais du MVC depuis longtemps, j'ai même commencé à en faire avoir de connaitre le concept, parcours d'autodidacte pragmatique oblige :)

mon code à été audité plusieurs fois pour la sécurité ou de la conformité w3c avec des bons résultats.

j'ai suivi les évolutions du web en intégrant des librairies comme JQuery ou bootstrap dans les projets.mes sites sont en responsive design depuis près de 2 ans. ils utilisent des technos comme memcached, redis ou mangoDB et sont rempli d' Ajax quand il faut et ou il faut.

j'ai beau dire ceci, références solides à l appui, une partie des pros avec lequel j'échange, souvent plus jeunes que moi , me prends plus ou moins pour un extra terrestre car eux ne jure que par ruby on rails, symphony ou django. ils ont appris à faire des sites web avec ces technos et ont en gros le raisonnement inverse , à savoir

"stop le PHP à la main, c est dla merde ! on veut du framework le PHP brut c est pour les loosers"

d après eux le fait que j'ai fait le choix de bosser sans framework fait que je suis moins performant, que je gère un code avec plus de failles de sécurité, moins maintenable etc... et qui au final coute plus cher au client final !

pour ce qui est des failles, certes on est jamais à l abri, mais contrairement à certains jeunes dev que j'ai vu passer chez moi , je connais parfaitement les techniques d injection SQL ou XSS et sais parfaitement filtrer des variables d entrée.je sais donc comme les éviter et quelles erreurs de codage créés ces failles. ce qui n est pas forcement le cas d'un dev PHP qui apprends PHP en même temps que symphony...

pour ce qui est du prix, je demande à voir. je cherche en ce moment si il existe réellement des études sérieuses sur ce point. genre un projet type qui est réalisé dans différentes équipes sur différentes techno.

et puis le raisonnement sur la facturation est souvent le suivant :

dev PHP : XX euros par jours
dev Symphony 2 : XX * 1.5 par jours.. au final comme le développeur coute plus cher au TJM, le gain en terme de compétitivité est tout de suite moins évident.

par exemple nous avons récemment travaillé sur un réseau social privé.

- wall type facebook, possibilité de mettre ou plusieurs images ou videos , embedder une video youtube, like de posts et commentaires, notifications lors des likes, nouveau post, albums sur les profils, notion de confidentialité avancé sur les contenus (public, privé, amis, amis de mes amis, info professionnelles, hobbies..)

- fonctionnalité d événements , gestion de participation, invitation, commentaires et like sur les événements.

- gestion d amis + requalification des amis en voisins, relations pro, famille)

- gestion des petites annonces avec photos, like et commentaires

- chaque utilisateur peut supprimer son contenu, et l admin peut tout gérer

- l admin peut créer des nouveaux réseaux et créer les comptes utilisateurs (réseau privé immobilier)

et j'en oublies...

tout ceci, en responsive , développé , intégré , bug free car recetté sur tablette, différents mobiles, pc mac (hors graphisme fait par une autre agence ) : 80 jours/homme.

fallait t il le faire en symphony, cakePHP, ruby on rails, django.. ? la question reste ouverte, mais le fait de l avoir fait en 80 jours (sachant qu'une 15 aine de jours est de la gestion de projet + recette) me semble une performance pas si mauvaise :)

Comme je suis pas fermé aux nouvelles technos et que je trouve vraiment dommage de perdre des clients parce que je connais pas le dernier framework à la mode, j'ai décidé de me mettre à Laravel dans un premier temps, puis pourquoi pas à symphony.

Je m'attends au final à être peu performant sur les 2/3 premiers projets, mais je deviendrais gagnerait à mettre les beaux logos des ces framework markettés sur mes devis :) .

Et comme certains donneurs d ordre sont en partie influencé par le marketing de ces framework, je vais moi aussi en profiter :) parfois dire qu'on va utiliser tel framework ou tel CMS permet de doubler son devis sans soucis.

par contre je garderais ces technologies pour des projets nécéssitant plus de 15 jours de développement. ça n'a pour moi aucun sens d'utiliser symphony ou équivalent sur un projet de petite taille.

2c509b9a2abbb1edbf306928ef475b56?s=200&r=pg&d=mm
Nicolas Raby, 10-02-2014 16:10:36 - Répondre

petit complément de mon post précédant :

install symphony nu : 6452 fichiers
install laravel nu : 3518 fichiers
mon projet de réseau social immobilier complet : 2145 fichiers mais 1440 sont des dépendances de SendGrid (solution emailing)

1
Grafikart, 10-02-2014 19:32:43 - Répondre

Dans ce que tu dis, ton code est un framework (c'est un framework perso certes mais je catégorise ça comme un Framework car tu t'ai créé des classes génériques comme ton ORM ou autre) Lorsque je parle de code PHP "brut" je pense à ceux qui utilise un bon vieux mysql_query à chaque fois qu'ils doivent sélectionner qqchose (qui ne font pas un code DRY ^^).

2c509b9a2abbb1edbf306928ef475b56?s=200&r=pg&d=mm
Nicolas Raby, 11-02-2014 18:49:39 - Répondre

oui mysql_query des vieux souvenirs :). la plupart des devs sont passé à des trucs plus moderne comme PDO non ?

pour l instant je m'amuse bien en apprendre Laravel en tout cas, mais je suis un peu déçu par le fait que pour faire du CRUD il faut quand meme manger pas mal de code . je me base sur ce tuto http://scotch.io/tutorials/simple-laravel-crud-with-resource-controllers ou celui la https://www.packtpub.com/article/laravel4-creating-a-simple-crud-application-in-hours

Apres rien m empeche de sur coucher pour avoir un code plus compact.

A titre d exemple dans mon framework coté backoffice pour faire une page d admin d'une table simple , fonctionnalité CRUD, reprensentation sous forme de tableau ExtJS , gestion d'upload d image et generation de thumbnails ca donne ca

<?php

$adm = new CMyAdmin('annonceurs');

$adm->title = 'Administrations des annonceurs';

$adm->use_modif = true;
$adm->use_add = true;
$adm->use_suppr = true;

$adm->SetIdKey('id');

$adm->uploader->CleanLods();
$adm->uploader->AddLod(48,48,true,'../medias/images/');
$adm->uploader->AddLod(128,128,true,'../medias/images/');

/**
* Affichage d'une image
* @param array $row une ligne de la base de donnée
* @param string $key le nom d'une colonne de la base de donnée
* @param CMyAdm $adm
* @return string l'html pour afficher une image dont le chemin est stocké dans
* la colonne $key de la base de donnée
*/
function displayImage($row, $key, $adm)
{
return sprintf('<img src="../p-img.php?w=48&h=48&u=%s" />',
generateAbsoluteUrl('medias/images/'.$row[$key]));
}

function displayLink($row,$key,$adm)
{
return sprintf('<a href="%s" target="_blank">%s</a>',$row[$key],$row[$key]);
}

$formEntries = array(array('name' => 'ID',
'type' => 'hidden',
'sqlname' => 'id'),

array('name' => 'nom',
'type' => 'text',
'sqlname' => 'nom'),

array('name' => 'image',
'type' => 'image',
'sqlname' => 'image'),

array('name' => 'texte',
'type' => 'wysiwyg',
'sqlname' => 'texte'),

array('name' => 'lien',
'type' => 'text',
'sqlname' => 'lien')

);

$adm->AddFormEntries($formEntries);

$fields = array(

array('name' => 'ID',
'type' => 'string',
'sqlname' => 'id'),

array('name' => 'nom',
'type' => 'string',
'sqlname' => 'nom'),

array('name' => 'image',
'type' => 'string',
'sqlname' => 'image',
'func' => 'displayImage'),

array('name' => 'lien',
'type' => 'string',
'sqlname' => 'lien',
'func' => 'displayLink')

);

$adm->addFields($fields);

$adm->Run();

?>

j'ai plein d options pour faire des callback ajax, des controles sur mesure.le code est un peu old school sur certain points car j'ai commencé a coder le machin en 2005, mais coté productivité c est super rapide pour faire des backoffices avec ! et encore, il y aurais matière à compacter le code encore largement.

56abe41207f66ec07e504a16cd42c939?s=200&r=pg&d=mm
Nadawoo, 28-09-2014 19:48:08 - Répondre

Bonjour,

Nicola Ruby : Cela fait donc près de 15 ans que tu développes et perfectionnes ton framework personnel. En le commençant aujourd'hui, pour atteindre le niveau où il est, il faudrait attendre 2025 ou 2030... Le propos des frameworks tout prêts, c'est justement de s'épargner ces longs temps de tâtonnement et ne pas "réinventer la roue". :)

Et au final, qu'est-ce qui fait gagner du temps sur tes projets ? Le fait que tes collègues utilisent un framework. Fait maison, certes, mais framework quand même. Tu ne prônes pas qu'il recodent "from scratch" ce que tu as mis des années à mettre au point. Ton témoignage va donc en faveur des frameworks. ;)

9b7dc451801ac8d71aff2a8b88849cbe?s=200&r=pg&d=mm
Arkes, 28-12-2013 13:45:33 - Répondre

Merci pour cet article qui répond à de nombreuses questions que je me posais depuis un certain temps ! :)

Personnellement ce qui me dérangeais c'est qu'apprendre à maîtriser correctement un framework demande beaucoup de temps et de patience, d'autant plus qu'il faut également apprendre à construire une architecture MVC, mais j'ai cru comprendre que ce ne sera que du temps gagné pour la suite donc je m'y met de suite ! ;)

081d8762a03582d07b500a31a9dca20a?s=200&r=pg&d=mm
Guillaume, 17-10-2013 16:01:28 - Répondre

J'ai adopté CakePHP en version 2.x et je ne peux plus m'en passer. Et utiliser bake et les templates de vue permet de créer hyper rapidement une interface d'administration.

022ca43ef65fbd6d7b317537397354cc?s=200&r=pg&d=mm
Aureroy, 03-10-2013 03:46:20 - Répondre

Très bon article, en revanche laravel propose (en version bêta) plusieurs versions par jour (pour moi il y a trop de mises à jour, et non pas assez comme tu le dis).

25a7ef5021afa857349d16f1146dc08b?s=200&r=pg&d=mm
heaven-khn, 24-09-2013 03:26:22 - Répondre

Je prefere codeigniter. Je pense que sa documentation est tres bien conçu

3f3a58195197a35c6c6070dbc867b852?s=200&r=pg&d=mm
wYm, 24-09-2013 03:25:17 - Répondre

Pour ma part ya pas mieux que CI

F56a1d5027c5f85ae1c7a176bbbb5777?s=200&r=pg&d=mm
ghassen, 21-09-2013 00:46:45 - Répondre

merci c'est un bon article ....

Ea77c6205a415ce9d809004c408f1ab4?s=200&r=pg&d=mm
Seddik06, 13-09-2013 19:03:13 - Répondre

Moi aussi j'utilise CakePhp.

CakePhP = Performances + Facilité

591e3e5e946bfe18847080001569a288?s=200&r=pg&d=mm
Mika, 01-09-2013 00:20:03 - Répondre

Le tout c'est de choisir le bon framework ;)
Et pour cela, il faut vraiment comparer les uns et les autres, une bonne page de social compare permet de se faire un avis: http://socialcompare.com/fr/comparison/php-frameworks-comparison

Personnellement, pour me faire une place dans ce monde très compétitif, je propose un générateur de code web (pas de ligne de code) qui permet bien des choses + je mets à dispositions moultes tutoriaux écrit et vidéos afin de séduire en quelques minutes (comment mettre en place un CRUD, une authentification, acl...)

Les vidéos: http://mkdevs.com/screencasts.html

A65f832d88a663aacae03643b8330bb6?s=200&r=pg&d=mm
khomalli, 27-08-2013 13:44:03 - Répondre

Je pense que le framework facilite la tâche pour le développeur pour moi CakePhp et le meilleur pour des applications de taille moyenne

1f373f7eb4d8e5e040cae2ecf4341bfe?s=200&r=pg&d=mm
darkhexagon, 26-08-2013 19:35:32 - Répondre

Moi j'utilise un code maison que j'ai commencé avec le tuto sur comment créé un mvc.

17296b673a3ff52242ee09e929fc4f53?s=200&r=pg&d=mm
zork, 26-08-2013 19:21:16 - Répondre

Excellent post comme d'habitude Graf ;)

Pour ma part j'utilise symfony2.2 et je partage complètement ton point de vue.

Bravo, ça peut apporter des arguments commerciales en plus xD

Bc61c0983e78f3ccd30615012b03a988?s=200&r=pg&d=mm
Aquarius, 25-08-2013 15:27:34 - Répondre

Je ne suis pas d'accord avec l'auteur de l'article , apprendre un Framework ça prend des mois voir des années ensuite le jour ou ce framework n'est plus à jour qu'est-ce qu'on fait du code ?
il faut le maintenir tout seul ? ou passer le projet dans un autre framework ?
Si utiliser un framework permet d'accélérer la productivité et d'autre aspects , il faut aussi prendre en considération qu'on dépend du bon vouloir d'une autre équipe de développeurs.
Si en PHP les Framework sont très utilisés dans le développement logiciel c'est pas forcément le cas.
L'auteur est indépendant mais un employé qui est dans une boîte ne décide pas ce qu'il utilise comme Framework moi j'ai dû utiliser des librairies codées par quelqu'un d'autre et de ce fait qu'effectivement le code est plus difficile à comprendre mais ça prend moins de temps à le maitriser.

Alors qu'avec un framework au moindre problème il faut se taper des docs etc...sans parler des framework avec des divers bug.
Une autre précision utiliser un framework ça peut apporter beaucoup de bienfaits mais une fois qu'on veut faire un truc spécial ça devient terriblement complexe.

Par conséquent je dirai qu'utiliser un framework faut le faire en le maitrisant et après avoir fait des tests s'il convient au développement mais l'utiliser en production sans avoir fait des testes c'est risqué.

Je préfère coder mes propres librairies mais au moins je sais ce qu'ils font et comment ils le font qu'apprendre un framework 1 qui passe en version 2 et après plus rien ne fonctionne où il faut tout réapprendre et le jour ou tu vas pour maintenir l'application ça devient catastrophique.

B9d731d0a2648078e17e79364680d49d?s=200&r=pg&d=mm
Alexis, 26-08-2013 19:13:49 - Répondre

Si ton Framework prend des années à apprendre, alors c'est sur il faut changer de framework. Aussi, la maintenance c'est un problème récurrent, surtout dans le web et ce que tu utilise un framework ou pas:
-Ton application est en PHP4 et la moitié des fonctions ne marchent plus ou créent un warning.
-Le serveur viens d'être mis à jour (enfin) mais maintenant ta librairie PHP n'est plus compatible avec tes fonctions.
-Le layout de ton site est fait avec des Tables, et non seulement le design est passé de mode, mais à présent il faut impérativement qu'il soit responsive.
-Tu fais un usage intensif du flash, mais l'editeurX s'est embrouillé avec adobe et à décidé de ne plus supporter le flash.
-L'algorithme de Google à changé et ton site se retrouve soudainement sur la 3eme page alors qu'avant il était dans les 5 premiers.
-L'api de facebook à changé et ton bouton 'partager' ne fonctionne plus.
-Google à soudainement décidé de fermer son service de météo.
etc...
Bref bienvenu dans le monde merveilleux de l'informatique.

De plus, coder ses propres classes c'est cool, mais pour le gars qui passe derrière ça l'est souvent moins car il as tout simplement pas la même logique que toi:
-1 "j'ai du mal à comprendre, c'est prise de tête son truc, moi j'aurais pas fais ça comme ça".
-2 "Ah d'accord, j'ai compris, mais le client il veut avoir acces au truc machin chose en plus, alors il faudra que je la modifie un peu."
-3 "Ah mais attend, si ça se trouve il utilise aussi cette fonction ailleurs et si je la modifie je risque de tout casse"
-4 "Bon, ras le bol, je vais créer ma propre fonction qui fais plus ou moins exactement la même chose mais à ma façon".
Etc...
J'ai déja vu des classes contenant jusqu'a 5 fonctions différentes qui faisaient toutes la même chose.

Enfin, c'est pas parce-que la nouvelle version 2 est sortie qu'il faut migrer son application: si c'est pas cassé faut pas réparer.

En gros, je pense que si ton but c'est d'avoir une application qui reste maintenable et ce indépendamment des évolutions technologiques, tu as mal choisi ton language: ce qu'il te faut c'est du Cobalt, de l'Assembleur ou éventuellement du C (pas pour rien que ce sont des languages souvent utilisé dans l'industriel), là au moins tu seras relativement tranquil pour ce qui est de la maintenance future, mais en PHP dans le domaine du Web .... si ton site est resté le même pendant plus de 2 ans alors bienvenu dans ringard-land.

C6f9e089cdbf21fb7fb06a86dc5365a2?s=200&r=pg&d=mm
canardcache, 26-08-2013 19:58:37 - Répondre

Sauf que dans la pratique, les framework ont aussi autant de façon de coder que de personnes qui codent (comme le code "pur")... donc ça change rien...

B9d731d0a2648078e17e79364680d49d?s=200&r=pg&d=mm
Alexis, 27-08-2013 18:10:27 - Répondre

C'est vrai, mais un Framework pose généralement un cadre relativement strict du coup on se prend déjas moins la tête à chercher la provenance du code et à comprendre l'organisations des fichiers etc...
Après dans l'ensemble je suis d'accord, ça change rien, et c'est justement là que je voulais en venir, utiliser un Framework ou du php "pur" ne change pas vraiment grand-chose.
Alors c'est sur qu'un framework comme Symfony ou Zend nécessite un temps d'apprentissage assez long, pas des années quand-même, mais je dirais 2~3mois pour passer de 'j'y comprend rien' à 'ça me simplifie la vie', sans bien sur devenir un expert du framework.
Mais ça évite de re-coder à la main une architecture MVC2 et un ORM, j'ai essayé de le faire une fois, et c'est franchement un travail énorme pour aboutir au même résultat que si on avais utilisé un Framework dès le départ.
De plus et bien que je n'ai pas testé tous les framework disponibles, la majorité sont suffisamment similaires pour ne pas vraiment avoir à tout ré-apprendre. Alors j'avoue que Symfony2 me semble assez particulier, mais avant j'utilisais Symfony 1.4 et en regardant Zend, CodeIgniter, Yii et CakePHP, je me suis rendu compte que la logique de base reste la même et que j'aurais aucun mal à m'adapter à l'un de ces Frameworks.
Alors après coder son propre Framework c'est pas en soi une mauvaise chose, mais on se retrouve au final à réinventer la roue et à moins d'être vraiment très discipliné en ce qui concerne la documentation les utilisateurs suivant se retrouvent vite dans le flou le plus total.

Enfin, si on tiens absolument à coder ses propres librairies c'est pas un problème les différents Frameworks permettent tous d'intégrer façilement et rapidement ses classes et ses fonctions persos, mais déjas si on peu ne pas perdre trop de temps à mettre en place le MVC2, l'URL-Rewriting, l'héritage des templates, la mise en cache, les classes représentant les tables de la base de données, l'échappement des variables dans les requêtes, la gestion de la localisation etc... Franchement ça représente un vrai gain de temps énorme sur toute ces taches rébarbatives mais nécessaires. Ensuite libre à toi de faire usage des fonctionnalités plus avancés offertes par le Framework ou pas.

3a38f1ca12db5e7f0d131af70b81b1e8?s=200&r=pg&d=mm
2b3ez, 22-08-2013 09:56:08 - Répondre

Sympas l'article !
Tu as oublié Jelix, le petit framework Français, qui est l'un des plus performant je crois.

Sinon pour revenir sur l'éternel débat des framework, il est clair qu'ils sont trop utiliser à tort, si bien que des dev symfony en perdent leur php.

Perso :
Pour un site de faible et moyenne quantité, c'est un CMS qui est préférable à un framework, voir développer le site à la mano, qui offrira beaucoup plus de liberté.
De dire, oui mais le frmaework (tout comme le CMS) permet de réutilisé le code derrière, c'est PIPO. car après, 2 ans de vie le framework ou le CMS a pris des versions de retard et quand vous allez voir une agence web, il vous devise une charte graphique, s'ils sont bon prince une mise à jour, mais comme la plupart ne le sont pas une refonte du système avec leur outils (CMS ou framework)

Moi j'utilise les framework essentiellement lorsqu'il faut faire des sites mutualisés (sur un même serveur avec un fonctionnement similaire), cela me permet de partager les librairies communes, du coup 1 framework gère plusieurs sites.

553b1a89c7bb740a753a7813648c36c3?s=200&r=pg&d=mm
alex007, 21-08-2013 19:41:18 - Répondre

Même si c' est Symfony qui domine le marché connaitre un autre Framework est rarement éliminatoire si on cherche un emploi.
En général les recruteurs veulent juste qu' on ait les compétences en POO et qu' on connaisse bien la structure MVC. La connaissance de Symfony ou Zend est juste un plus.

Donc on peut toujours trouver du boulot dont le projet se base sur Symfony même si on connait Cakephp. Il faudra bien sur un temps d' adaptation mais c' est rapide.

535a83a7a085c84b4cd63901ec11a5bd?s=200&r=pg&d=mm
PlumPlum, 21-08-2013 13:30:52 - Répondre

Merci pour vos réponses :)

Vos avis me réconfortent car c'est également ce que je pense. J'avais quelque peu déchanté en voyant les offres d'emplois demandant (imposant?) la connaissance de symphony 2 sans mentionner les autres frameworks.

Je pense jeter mon dévolu sur cakePhp dans un premier temps qui semble assez accessible au vu de mes premiers tests :)

B9d731d0a2648078e17e79364680d49d?s=200&r=pg&d=mm
Alexis, 20-08-2013 14:57:53 - Répondre

@Citr3x Je suis plus ou moins d'accord sauf que apprendre un framework n'est jamais une perte de temps, on découvre de nouvelles façon de travailler et de concevoir une application et ça donne des idées pour plus tard. De plus quel que soit le framework utilisé il va vous inciter a avoir une certaine rigueur dans l'organisation de son travail. Moi par exemple pour devenir web-développeur j'ai suivi une formation en Java J2EE, puis finalement j'ai trouvé du travail en php, eh bien je peux vous assurer que le temps passé sur Java était loin d'être une perte. Il en va de même pour les frameworks si on apprend CakePHP ou Zend et qu'on se retrouve à travailler en CodeIgniter ou Symfony, je peux vous assurer que ça n'auras pas été une perte de temps car on as appris à maitriser une logique MVC, a travailler avec un ORM, à faire de l'objet, à chercher et utiliser les methodes mise à disposition par le framework, à organiser ses fichiers logiquement etc...
De plus lil ne faut pas oublier qu'un client paye pour avoir un site web, pas un framework, la techno utilisé il s'en fout du moment que ça fonctionne. Dans les annonces d'emploi, un élément qui reviens souvent: "être force de proposition", ce qui veut dire que si vous préférez CakePHP à Symfony, ExtJs à jQuery, Foundation à Bootstrap etc... libre à vous de faire valoir vos choix techniques, rares sont les patrons qui vous contrediront. Après tout, avoir 3 développeurs Symfony c'est sympa, mais avoir 3 développeurs polyvalent connaissant plusieurs Framework avec spécialiste SF, 1 spécialiste Cake et 1 spécialiste Laravel qui peuvent se former entre eux c'est bien mieux.
Apporter des compétences nouvelles à une entreprise c'est aussi très apprécié.

369a0247549d7ffa2f9a6190bd0660bf?s=200&r=pg&d=mm
bishop27, 20-08-2013 13:50:45 - Répondre

Pour les débutants dans les framework je conseille codeigniter c'est un excellent tremplin vers des framework plus complexe mais avec la même philosophie comme cakephp

21697
xenos92, 25-08-2013 17:41:51 - Répondre

Cet article m'a donné envie de me lancer dans l'aventure du framework et effectivement quand on débute codeigniter c'est vraiment cool ;)

9fc6f05885f183c1c6b36a8acd7f0a6a?s=200&r=pg&d=mm
Citr3x, 20-08-2013 01:59:55 - Répondre

Plop tout le monde,
"seras totalement obsolète d'ici 5 ans" je suis bien d'accord avec ça (et encore 5 ans tu es optimiste), c'est là où est le problème !
Je pense, parce que je suis en début d'apprentissage d'un fw après moultes réflexions (SF2 pour ne pas le citer), c'est qu'apprendre un fw c'est bien (ouahou trop fort) mais il faut quand même essayer de miser sur le "bon" dès le départ de manière à éviter de perdre trop de temps d'apprentissage, de dispersion, c'est-à-dire que même si le monde de l'informatique évolue très rapidement, on a quand même le moyen de parier sur différentes techno, différents fw qui seront plus pérennes dans le temps.
Après je peux me tromper et j'attends vos avis !
Mais de ma réflexion perso un fw comme symfony a + de chance d'exister encore dans 5 ans, qu'un laravel (qui d'après ce que j'ai compris a été crée par un seul bonhomme), j'ai longtps hésité, entre symfony et cakephp malgré tout j'ai décidé de jeter mon dévolu sur Symfony.
Plusieurs raisons à cela, déjà c'est Français, les balbutiements datent de 2006 je crois donc déjà de l'xp, une forte communautés, des grosses boites l'utilisent, le marché de l'emploi qui a l'air d'être bcq plus centré sur Symfony et l'espoir que Symfony évoluera avec des versions majeures tous les 1-2 voir 3 ans comme il le fait déjà.
Qu'en pensez-vous ?

B9d731d0a2648078e17e79364680d49d?s=200&r=pg&d=mm
Alexis, 19-08-2013 17:40:07 - Répondre

Perso j'utilisait Symfony 1.4 avant, et depuis peu j'ai décidé de passer à Symfony2. Alors certes, la courbe d'apprentissage est assez élevée, mais la structure sous sf2 est franchement très propre et permet d'avoir un code facile à maintenir.
Aussi le principe des Bundles est super intéressant, car ça permet de créer assez simplement des Bundles réutilisables sur plusieurs sites, et éventuellement de les partager avec la communauté.
Après, c'est sur que si vous voulez créer Blog, il serait logique d'opter pour quelque-chose de plus light que Symfony.
Pour ce qui est de l'emploi, les entreprises cherchent avant tout des gens capables de s'adapter car les choses évoluent très vite dans le monde du web, passer du layout html en tableaux à l'utilisation extensive de div puis des balises HTML5 avec du CSS3 Responsive etc...
Ce qui ne change pas: POO, MVC, AGILE, SQL(et encore), UNIX....
Pour une entreprise investir 1~2 mois de temps pour former un employé aux méthodes de travail de l'entreprise (Framework compris) est tout a fait acceptable dans l'optique d'un CDI.
Le plus important n'est pas de savoir utiliser tel ou tel framework, mais de se tenir au courant des nouveautés (Le CSS Objet, Le principe du Mobiles First, L'ajout des Namespaces en PHP 5.3 etc...)
Quel que soit le Framework que vous choisirez, vous pouvez être sur que votre travail actuel seras totalement obsolète d'ici 5 ans de toute façon alors pour une boite informatique qui se respecte, la seule réelle compétence recherchée est l'adaptabilité.

535a83a7a085c84b4cd63901ec11a5bd?s=200&r=pg&d=mm
PlumPlum, 19-08-2013 14:36:16 - Répondre

Article intéressant, merci à toi :) Etant développeur depuis plusieurs années je me suis vu contraint de travailler sur un autre Langage que Php. Je compte changer d'entreprise prochainement et essaie de me remettre à jour au niveau php. La grande question : quel framework apprendre en priorité pour avoir le plus de chance d'être embauché ? Symphony semble être le plus demandé mais est-ce pertinent au vu des nombreux commentaires qui semblent dire beaucoup de bien de CakePhp et Laravel ?

Je ne souhaite pas lancer une polémique juste avoir quelques avis :)

Merci d'avance

B3a003a442eb6d031ab65de4e5ad2a04?s=200&r=pg&d=mm
Virax, 18-08-2013 23:20:41 - Répondre

Je trouve un peu idiot le développement de nombreux frameworks ces dernières années... Il commence à en avoir tellement que ça devient vraiment reloud... surtout quand on veut postuler dans une boîte... Exemple je vois très peu de boîtes qui demandent des compétences pour cakePhp... alors que Zend c'est la folie... enfin bref, s'il y en avait un ou deux... mais y'en tellement que ça en devient ridicule.

Et puis l'autre désavantage c'est qu'il faut apprendre tout ce framework à chaque fois, ça fait perdre un temps fou, parce-que pour apprendre Zend ou Symfony ça se fait pas en 2 mois.
Mais bref le monde du web part vers une dérive un peu bizarre je trouve, le marché déjà saturé le devient de plus en plus...
C'est dommage.

5ebe7c649b73a7102cd459d64110e2b3?s=200&r=pg&d=mm
lanzorg, 18-08-2013 10:34:18 - Répondre

J'ai recodé tous les sites de mes clients (Yii et Symfony2) avec Laravel 4, c'est super clean et ultra productif.
De plus j'en ai profité pour adopter le TDD et là encore Laravel est géniale, c'est fou le temps qu'on gagne (comparé à symfony et yii).

Sinon j'ai essayé Node.js et couplé avec Express pour le mvc et le routing, Jasmine pour le TDD (tests unitaires) et AngularJS côté client, ça dépote. C'est le genre de technologie où on est très sceptique au début et où le résultat est vraiment impressionnant. Je pense que si ça avait existé 2 ans avant qu'il ne soit sorti je n'aurais jamais fait de PHP !

D'ailleurs ça serait vraiment sympa de revoir un tutoriel Node.js sur le site.

9d6aaa6c308e15d87bf7083898260020?s=200&r=pg&d=mm
Rayderxx, 18-08-2013 02:29:49 - Répondre

Symfony 2 est pas mal quand on a compris le freamwork.

Perso je pense qu'il est important de voir autre chose que du "PHP", par exemple ruby on rails qui est un très bon freamwork.

Avec rails tout est simple on peut construire des applications avec un code clair, maintenable et simple sans trop de difficultés .

node.js aussi est pas mal même si c'est plus du "fais tout toi-même", express aide au niveau des routes mais aprés tu construis l'architecture comme tu le sens.

Pour les freamworks js du style jquery je pense que ça serait sympa de le coupler avec backbone ou ember qui donne une bonne structure aux api, jquery c'est trop le bazar quand on travaille sur une api complexe...

bref sinon c'est un bon article :p

6966cbb376e1c610817b399506fb1f91?s=200&r=pg&d=mm
HlB, 18-08-2013 08:41:45 - Répondre

Framework*

8bb9ee895480f060fb402c2fcc4b44c4?s=200&r=pg&d=mm
Sapher, 17-08-2013 16:38:29 - Répondre

Symfony est un peu spécial comme Framework. Quand on est un débutant on est content quand on voit qu'il y a des bundles qui font directement ce que l'on veut. Mais quand il arrive le moment où aucun bundle (ou le framework) gère ce que l'ont veut intégré, ben le tweak est carrément chiant, il faut connaitre exactement comment le framework marche. Alors qu'en nodejs par exemple on est jamais bloqué (mauvais exemple mais bon).

25115
Xen0risDEV, 16-08-2013 20:09:38 - Répondre

Merci pour cette article :)

26bd3c576c30753ced5de50025e48d89?s=200&r=pg&d=mm
caledo120, 15-08-2013 22:56:42 - Répondre

Bonjour, après il y a aussi une autre manière de voir les choses pour ceux qui n'utilisent pas de framework, au lieu de prendre du temps pour en apprendre un autant utiliser ce temps pour apprendre un autre langage, je suis sous Angular / NodeJS depuis peut et honnêtement c'est de la bombe, toutes les limitations de php s'envole, quel bonheur de programmer en asynchrone.

E847ce8054a86019ad516d1ad8af3e34?s=200&r=pg&d=mm
Soufiane, 15-08-2013 22:53:49 - Répondre

J'adore cakephp , bonne article merci ^_^

68ed0c0de15bc2db6d77184c97751330?s=200&r=pg&d=mm
Pyjou, 15-08-2013 20:32:52 - Répondre

Moi perso je suis plus sur Symfony 2 car j'ai bien accrocher le système de routage sur les différents Controller et aussi le système de sécurité Ultra Safe à mon goût !

12646
maximeshr, 15-08-2013 14:04:36 - Répondre

Je valide également que du coté de mon plat pays, la Belgique, on demande également du Symphony et du ZEND/Drupal mais rarement du CakePHP :'(

5978d835915a722d1ff754f5ec044365?s=200&r=pg&d=mm
sisyphe1980, 15-08-2013 12:43:21 - Répondre

un article clair,pour ma part,je pense que l'utilisation d'un framework viens au fur et a mesure que l'on monte en compétence en php.plus l'on monte en compétence,et plus l'utilisation d'un framework devient évident.

35e801ade77d9da615841c98d67036eb?s=200&r=pg&d=mm
Xtr3me, 16-08-2013 20:13:50 - Répondre

Un Framework c'est pas destiné spécifiquement à PHP. Des frameworks tu en as pour tout les langages et c'est dans une moindre mesure un passage à un autre stade de développement que celui pratiqué par certains programmeurs.

5978d835915a722d1ff754f5ec044365?s=200&r=pg&d=mm
sisyphe1980, 17-08-2013 12:43:37 - Répondre

bien évidement quand je parlais de php c’était un exemple basé sur l'article qui parlais des framework php mais bien sur cela est valable pour les autres langages.

D1e4778146198d477bccbd1050bfdcf8?s=200&r=pg&d=mm
amir, 15-08-2013 11:17:18 - Répondre

I think Cakephp is the best framework and it's very easy to learn

954b45273c31ef2e80c9675a74c3c3c7?s=200&r=pg&d=mm
Nonathy, 15-08-2013 10:30:14 - Répondre

Eh bien tu m'as convaincu, je me suis toujours dis que c'était mieux de coder un truc fait totalement par sois, etc ... mais ton article m'a ouvert les yeux sur les opportunités des frameworks, alors je dis oui et je vais commencer l'apprentissage de l'un ou l'autre :)

8d8b0042a241304a39a3a536cf955bda?s=200&r=pg&d=mm
alexandreg, 15-08-2013 04:05:28 - Répondre

"Stop les tuto CakePHP c dla merde !" Bien au contraire, je trouve les tutos et la formation CakePhp d'une grande qualité. J'ai plaisir à apprendre ce framework grâce à ces vidéos et je souhaite en voir d'autres. Tu as tout mon soutient.

7a10454cc2c4465fa3bebdd40dcb753b?s=200&r=pg&d=mm
Ramzz1994, 15-08-2013 03:26:32 - Répondre

Avez-vous essayé Phalcon ? Ses performances me semblent très élevé comparativement aux autres Framework. Je crois que je vais me laisser tenter à celui-ci. :-)
http://phalconphp.com/fr/

08478a7049cc24ac7fee6715586f0964?s=200&r=pg&d=mm
zkiller, 15-08-2013 02:34:36 - Répondre

Moi j'adore cakephp pour sa simplicité mais assez puissant et sa communautés :)

Ffe57a45181dc1e534ceee051b8a159f?s=200&r=pg&d=mm
Crop83, 15-08-2013 01:15:41 - Répondre

Je ne peux qu'acquiescer.
Travaillant que sur de petits ou moyens projets, j'utilise Slim (http://www.slimframework.com).
Il fait l'essentiel et est très léger et (donc) performant.
Je complète avec d'autre libraire au besoin (merci composer !).

Sur des projets plus conséquent il est peut être nécessaire de passer sur plus gros framework comme ceux présentés dans l'article.

Dans tous les cas il est intéressant d'essayer de développer son propre framework pour apprendre en profondeur à la fois le langage (PHP) mais aussi le protocole HTTP (un indispensable à connaître pour ma part).
Mais dans un environnement pro, je ne pourrai me passer d'un framework robuste et maintenu à jour par la communauté.

A87c74981d597044ee6002a627bb1d33?s=200&r=pg&d=mm
Caribeo, 15-08-2013 01:01:16 - Répondre

perso, moi j'ai suivi une formation d'un an sur Zend, et j'ai pas capté grand chose car c'etait super speed pour moi :(
parcontre quand j'ai commencé à suivre ton tuto sur cake php, ca a pris du sens. Et j'ai compris l'intéret des frameworks

7508e0d32d3964ffbb8e14482ca62b0d?s=200&r=pg&d=mm
theshadoo, 15-08-2013 00:42:19 - Répondre

Je pense, et je suis loin d'être le seul, que développer en php avec l'aide d'un framework, c'est surtout une question de bon sens. Comme tu l'as souligné de toute façon, c'est une question de logique. Je me rappelle m'être bataillé avec un développeur sorti de formation et autodidacte en php de plus de 5 ans (d'ailleurs l'humilité n'était pas son art de vivre) qui ne comprenait rien à jquery, aux plugins, aux frameworks, aux moteurs de template smarty et j'en passe...
Résultat, j'ai du reprendre et refaire tous ses codes js, php et je ne parle même pas de l'architecture applicative. Je suis passé pour le développeur lent de service, mais à force de prendre de l'expérience sur des technos comme zend etc... Donc voir par là "les bonnes pratiques de la programmation", j'ai mis plus de temps que les autres à pondre du code, mais il était maintenable et mieux pensés.
Eux ne faisaient que du jetable hélas, même notre pseudo directeur technique qui était à cheval sur les performances de php mais il s'attardait plus sur des perf insignifiantes que sur des réels performances tant sur les requête sql que sur la logique de code.
J'ai eu l'occasion de développer sous beaucoup de CMS et de framework diverses. Aujourd'hui je développe en Symfony2, j'ai encore pas mal de choses à apprendre mais j'ai pu tombé sur de bonnes problématiques déjà.
Mon constat aujourd'hui c'est que toutes les boites demandent symfony2 car ils ne font qu'écouter les écho mais ne connaissent pas vraiment.

Cela a été exactement la même chose avec les CMS. On ne voit que tu symfony2 partout, c'est bien beau mais par expérience une chose que bien des entreprises, DSI & co oublient dans le choix d'un outil, c'est bien la courbe d'apprentissage !
C'est pour cela que j'étudie aussi un autre framework tel que FuelPHP ou Laravel étant presque aussi puissant qu'un Symfony2 et en HMVC mais beaucoup plus simple à apprendre.

J'aime beaucoup FuelPHP car il possède la même philosophie que CodeIgniter, laravel 4 est très bien (laravel 3 je le trouvais bien trop limité et plus RC qu'autre chose) mais voilà que l'on vient nous sortir un énième moteur de template tel que Blade alors que déjà on commence à peine à avoir des IDE qui support twig. Je trouve ça complètement inutile, attention j'ai pas dit que les moteurs de template étaient inutile ! Loin de là, ça augmente drastiquement la lisibilité d'un code plutôt que d'utiliser du php et ça évite d'avoir à créer tout son système de layout, héritage etc... mille fois plus pratique.

J'attends de voir la com de Fuelphp 2, car à comparer laravel 4 et fuelphp, fuel permet bien plus de polyvalence en therme de config, choix tpl etc... Pour ces points j'ai choisi de me perfectionné sur fuelphp.

Résultat je préfère au moins avoir deux frameworks que je maîtrise (à terme symfony2) SF2 et Fuelphp car si une entreprise désirent migrer un projet sous un framework je pense vivement lui conseiller fuelphp au lieu de Symfony2 si cela est possible.
La courbe d'apprentissage sera beaucoup plus rapide à appréhender par des développeurs que symfony2, et si l'on veut éviter de concevoir une nouvelle version de leurs applications en concevant dès le départ un prototype c'est une choix à ne pas négliger.

Si la boite qui se tourne vers Symfo2 et qu'elle est prête à embaucher des dév expérimenté dans ce framework, là effectivement le choix se tournera vers ce dernier.

6b4c9f44b83599ccbc6b9b957e202758?s=200&r=pg&d=mm
Seazer, 15-08-2013 22:07:59 - Répondre

Je suis bien d'accord avec toi. J'ai deux frameworks en fonction du besoin : CakePHP et Symfony2.
Rien ne sert de tuer la mouche avec un bazooka.

Rien que sur OVH Mutu par exemple, Symfony est un peu à l'étroit et pas de composer donc on perd toute l'essence de SF2. (Et oui, upload des vendors, si en plus tu passe en prod un vendredi, ta tout gagné)
Par contre si on passe sur Dédié/VPS voir Cloud pour un gros projet, là Symfony2 commence à révéler toute sa puissance.

7508e0d32d3964ffbb8e14482ca62b0d?s=200&r=pg&d=mm
theshadoo, 17-08-2013 19:41:21 - Répondre

Tu m'en diras tant lol je rencontre justement un problème pour un serveur de dev où symfony2 doit tourner pour la cliente, et je recontre des problèmes pour l'upload de certain vendors.

771fac1aa65968b44adc5210a587394b?s=200&r=pg&d=mm
luffysan, 19-08-2013 12:24:07 - Répondre

Je te comprends parfaitement mais c'est dans toutes types de dev. On passe de développeur d'applications à Architecte Logiciel ou Architecte Web. On ne peut pas trop en vouloir au autodidacte de ne pas avoir appris la structure et les design Pattern.

Aujourd'hui celui qui est bon en web. C'est pas celui qui a produit un beau code ou un code cohérent mais celui qui a résolu le plus de bugs (J'exagère beaucoup ...). Parce que cela se vend mieux ^^, c'est triste mais c'est comme ça.

On cherchera donc plus du cours terme. C'est pour ça qu'on préféra un CMS qu'à un framework.

E2ac6072093356c75a4e1c04446bfb93?s=200&r=pg&d=mm
halfjo2000, 15-08-2013 00:14:40 - Répondre

Intéressant comme article. Je dois avoué que je n'ai pas tout lu en détail, mais on comprends assez rapidement le fond du sujet.

Framework ou pas ?

Pour moi il faut commencer par faire preuve d'humilité. Personnellement quand je vois le travail effectué par certains développeurs je ne peux qu’admirer leur génie (et la je ne parle que des premières versions, pas celles qui ont étés rodées par la communauté pendant des années... ). Et honnêtement, sans vouloir être blessant, peu de personnes ici peuvent prétendre pouvoir en faire autant, notamment seul dans leur coin.

Visiblement la critique est facile, mais combien ont pris le temps de creuser (et vraiment creuser) le coeur du framework avant d’émettre un avis ?

Dev son propre système à de vrai bon coté, mais c’est plus formateur qu'efficace la plupart du temps. Par ailleurs, il est a mon avis important d’appréhender également les autres langages proposant eux aussi leur propre framework. Leurs visions / lignes de conduite sont souvent différentes, avec leurs avantages et inconvénients. (la encore pour éviter une critique trop rapide).

<troll-on>
Moi j’ai pas accroché avec cake, c’est comme sa, je n’accroche pas non plus avec Justin Bieber (même si les raisons ne sont pas les mêmes -) ). De la à cracher sur tous les frameworks ou tous les canadiens...
Mais pour les “puristes” du dimanche (je parle la de ceux qui parlent vite, sans réelle connaissance, no offence aux gourous du milieu qui savent ce qu’ils font et pourquoi ils le font), je vous rappelle que globalement c’est 0 ou 1... le php soit disant brut n’est qu’une n eme surcouche.
</troll-on>

* Je me dis que j’avais sûrement envie d’écrire se soir. *

Pour finir sur laravel, vu que j’en bouffe à outrance ses derniers mois, et pour rassurer un peu notre hôte. Je doute que Taylor Otwell se tire une balle dans le pied en n’assurant pas la compatibilité des versions 4.x, surtout maintenant qu’il a “composer” dans son bébé. Et vu que tout le monde ici, en tant que bon developpeur, bosse avec les fameux “version control system”, le problème, si il se présente, ne devrait pas être insurmontable ;).

Je retourne sous photoshop :/, merci pour l’article.

604d03dec6a7b76f729b031896eb3bb9?s=200&r=pg&d=mm
Flo, 15-08-2013 00:00:46 - Répondre

Je suis un des rares à bosser avec Zend dans le coin apparemment depuis la version 2 c'est vraiment devenu un vrai bon framework puissant cependant la doc pêche un peu (beaucoup).Aussi, je pense aussi me tourner vers Lavarel pour des "plus petits" projets...

35e801ade77d9da615841c98d67036eb?s=200&r=pg&d=mm
Xtr3me, 15-08-2013 00:00:10 - Répondre

Tiens moi qui te demandais quelle était le meilleur choix entre un Framework ou un CMS pour un portfolio ;) .
Dis juste comme ça Grafikart est fait avec CakePHP ?

84982f7d782c1aac1f09256e1decdf09?s=200&r=pg&d=mm
Seris, 18-08-2013 04:40:25 - Répondre

Je crois que oui, mais j'ai cru voir un moment qu'il y avait du Wordpress quelque part (peut-être sur l'ancienne version).

6da434ddebf13cf9cc7c8850d5d7d4e8?s=200&r=pg&d=mm
talandria, 14-08-2013 23:17:50 - Répondre

Merci , de cet article ,qui répond à une question que je me posais depuis longtemps ... enfin tu y répond clairement.
j'apprend énormément grace à grafikart , et j'éspére encore te suivre trés longtemps ...

Bravo en tout cas pour ton site , et à la qualité de tes tutos .

Bonne continuation.

A4c48bb0b9e041ad0a5299f82b2b16d9?s=200&r=pg&d=mm
ZenDev, 14-08-2013 22:58:38 - Répondre

L'article est interessant et clair!
Merci pour le partage de la conf. du lead developer de YP. C'est très interessant! J'ai l'habitude de travailler sur Symfony2 en tant que développeur web et il est vrai que la puissance du framework se ressent après quelques optimisations.
Quelques pistes pour optimiser Symfony2: http://slides.seld.be/?file=2011-10-20+High+Performance+Websites+with+Symfony2.html

Bonne continuation!

A5dc23649a291705d2a12fa0f5605fd3?s=200&r=pg&d=mm
Lionel Marmier, 14-08-2013 22:49:32 - Répondre

Bonne article dans l'ensemble, mais je trouve dommage que tu ait utiliser plusieurs abus de langage.

Premièrement, se créer des bibliothèque ne veux pas dire que l'on se créer un framework qui signifie cadre de travaille. Un cadre de travail impose une méthode de travail, ce qui n'est pas le cas de simple fonction.

Deuxièmement, tu utilise très souvent à tort le mots librairies. Souvent les personnes font ses erreurs au début, par ce que le mots anglais pour ce dont tu veux parler ai librairies, mais ce mots se traduit en français par bibliothèque. Je suis un peu étonné qu'à ton niveau tu fasse autant d'erreur.

Autrement, moi je suis à fond pour les frameworks. Perso, j'utilise YiiFrameworks qui est très bon et qui à un modèle objet bien plus intéressant que CakePHP.

Merci a toi Jonathan.

B46a09b431f8d4677bd1d1e5773da7c7?s=200&r=pg&d=mm
je n'aime pas les troll, 15-08-2013 15:59:52 - Répondre

trolllll

698b402504caa0e4e216045f4e54fc12?s=200&r=pg&d=mm
caoua, 16-08-2013 02:27:52 - Répondre

Merci à toi d'avoir souligner ces deux points

26574
Benjamin Derepas, 14-08-2013 22:17:46 - Répondre

C'est toujours interressant d'avoir le point de vue d'autres professionnels du web sur ce genre de sujet !
Pour ma part, après avoir essayé Laravel, CodeIgniter et Cake, je suis resté sur Codeigniter, qui est , je trouve, très complet et simple d'utilisation

4ff53c483e2236995b93f7c36300a302?s=200&r=pg&d=mm
musicalitymaker, 14-08-2013 22:13:18 - Répondre

J'adore les framework principalement CakePhp

B58a71f272a2ef1f467fb5a93a90c764?s=200&r=pg&d=mm
slymer, 14-08-2013 21:49:20 - Répondre

Je boss actuellement sur php pur , j'aimerais beaucoup passé sur cakephp , mes franchement sa me fais peur...

56bc9572557284f52253dd25ad7cebfb?s=200&r=pg&d=mm
fly12, 14-08-2013 21:34:46 - Répondre

En terme de rentabilité et d'efficacité, nous ne trouvons pas mieux que les frameworks.
Bon article, j'adore...

698b402504caa0e4e216045f4e54fc12?s=200&r=pg&d=mm
caoua, 16-08-2013 02:40:21 - Répondre

[mode boutade]

tout à fait,
et donc ceux et celle qui ne jurent que par la performance, le «toujours plus», soit une logique du pire lorsqu'on la voit d'une certaine manière, doivent impérativement faire en sorte que les frameworks se répandent au plus vite.
Et si en plus de cette expansion, il ne pouvait en rester qu'un, qui d'ailleurs embarquerai tous les avantages des autres, alors ce serai royal.

[/mode boutade]

487f176d5629264db2af77c06e6a7959?s=200&r=pg&d=mm
didi, 14-08-2013 21:32:36 - Répondre

bon article :), mais j'ai quelques trucs qui me chatouillent quand meme ;) :
- pour les MaJs, il faut bien voir si on pourra se permettre de mettre le framework a jour, car certains gros projets par example peuvent s'averrer compliques a mettre a jour sans risquer de regression.
- la securite, en effet, si un framework est tres populaire, il y a de forte chance que plus de failles y soient decouvertes, bon elles seront surement corrigees par des MaJ, mais on en reviens au probleme precedent...
- la courbe d'apprentissage, car si on a un projet a faire pour avant hier (on est tous passe par la...) et qu'on ne connais pas (ou peu) l'outil, il est plus interressant d'utiliser un FW comme Fuel ou Laravel que Symfony
- la disponibilite de module/plugin/package, parce que je ne sais pas vous, mais moi, reinventer la roue ca me botte pas des masses donc si un schtroumpf a fait un package qui s'adapte a 90% a mes besoins, je vais pas recommencer a 0
- utiliser les bons outils, et la on en reviens au point d'au dessus, pour un site de publi, e-commerce ou blog il vaut mieux s'orienter vers un CMS deja tout fait comme wordpress, drupal ou magento par exemple (a moins que vous ayez des mois a y passer, besoin de peu de sommeil et que vous soyez pres a faire la maintenance durant la vie du site...)
- ne pas oublier comment on fait du code "vanilla". Parce qu'un framework c'est mignon, mais si on est par exemple plus capable de pondre une requete SQL parce qu'on utilise qu'un ORM c'est moche...(y'a qu'a voir le nombre de "dev" js incapables de faire une manipulation DOM sans JQuery, ca fait peur !)

Pour en finir avec mon nombril (:P), de mon cote j'utilise FuelPHP, assez complet et plutot suivi (mais pas trop ^^) il a comme la majorite des FW actuel une super ligne de commande qui permet de gerer moulte choses (scaffolding des fichiers MVC, migration de la DB, lancement de task, etc...), il est plutot simple et assez performant. Surement pas meilleur que d'autre, mais je pense qu'il merite a etre connu :)

26554
JamesHemery, 14-08-2013 20:57:39 - Répondre

Bonne article dont je me doutait qu'il en existerais un en voyant les commentaires sur les tutoriels ^^

93cf175a00500f59e500a5432a86401d?s=200&r=pg&d=mm
Liek, 16-08-2013 18:52:10 - Répondre

Lèche-botte.

Db2107ae0c810ca00a8d6cac9640148d?s=200&r=pg&d=mm
slyvaan, 14-08-2013 20:54:55 - Répondre

Laravel 4 <3

14697
sylvain, 14-08-2013 20:47:45 - Répondre

Je pense et je parle pour moi, quand les gens disent "Stop les tutos CakePHP c dla merde ! on veux du PHP Brut ça sert à rien les framework"
C'est parce qu'ils veulent apprendre PHP et non pas CakePHP qui n'est pas un langage en soit.

J'ai entendu me dire dans un entretien dans une grosse boite de télécom française qu'il prenait les candidats seulement s'il maitrise en priorité le langage vs le framework.

Dans CakePHP on a déjà tout de près, il y a plus qu'a...

0a2bfa6d38c6152f853f90f3d6367868?s=200&r=pg&d=mm
duffJohn, 14-08-2013 21:22:53 - Répondre

Pas vraiment dac avec toi.
Si tu ne maîtrises pas le PHP oublies le framework.

Ensuite si, une personne ne gère pas le PHP il existe ce super site : http://php.net/
;)

35e801ade77d9da615841c98d67036eb?s=200&r=pg&d=mm
Xtr3me, 14-08-2013 23:58:18 - Répondre

Partiellement d'accord avec toi si tu connais la logique d'un Framework même en ne maîtrisant pas le PHP tu peux utiliser le Framework.
Dis-moi qu'est-ce qui t'empêche de créer un controller avec une action en se basant sur les tutoriaux déjà vu sans même connaître le principe d'héritage, d'objet ou autre ?

7508e0d32d3964ffbb8e14482ca62b0d?s=200&r=pg&d=mm
theshadoo, 15-08-2013 00:55:56 - Répondre

Au contraire je suis totalement de l'avis de @duffJohn Si une personne n'a pas un bon niveau en php je ne pourrais que lui conseiller déjà de se tourner vers CodeIgniter qui n'est pas très compliqué et pas full objet.
Par contre @Xtr3me, c'est faux ce que tu dis. Par expérience multiple j'ai pu rencontrer plusieurs développeur étant expérimenté en PHP après de longues années et qui ne connaissaient ni framework ni cms... Et je peux t'assurer sans me tromper qu'ils se sont tous bien planté où n'y comprenaient rien ! Tu peux connaître la logique du MVC à ne pas confondre avec la logique d'un Framework qui peut être très différente de l'un à l'autre. Combien de développeur j'ai pu entendre dire sur un cms ou framework : "Je n'y comprends rien !" ???
Un développeur ayant un bon niveau en php POO tu peux être certain qu'il aura dans son apprentissage eu l'expérience d'un cms ou un framework. J'en vois encore qui se plante sur la logique MVC. J'ai eu beau apprendre ZendFramework, CodeIgniter et des CMS, pour pas mal de framework php j'arrive rapidement à passer de l'un à l'autre mais pour d'autres tel que Syfmony2 par exemple, c'est une tout autre histoire je peux te dire.
Un développeur n'ayant pas une culture cms ou framework ne pourra (presque) jamais créer une application solide et open-source. Elle sera mal pensé tu peux en être certain à 90%.
Le ou les dev capable de faire cela ont déjà de la bouteille et ne se sont pas reposé sur leurs acquis, il faut que pas mal de dev dans le monde informatique arrêtent de se comparer le bulbe et fassent preuve d'humilité, c'est très souvent ce que l'on rencontre hélas.

26574
Benjamin Derepas, 16-08-2013 17:20:50 - Répondre

"Si une personne n'a pas un bon niveau en php je ne pourrais que lui conseiller déjà de se tourner vers CodeIgniter qui n'est pas très compliqué et pas full objet."
C'est un peu ridicule comme jugement ... CodeIgniter est différent car il utilise le singleton, mais dans l'ensemble, c'est un très bon framework !
Que se soit pour un site type blog, portail, ou même app web complète, je l'utilise !

35e801ade77d9da615841c98d67036eb?s=200&r=pg&d=mm
Xtr3me, 16-08-2013 20:20:00 - Répondre

Je n'ai pas dis qu'une personne expérimenté réussirai forcément dans la compréhension d'un Framework mais qu'une personne inexpérimenté ou alors peu pourrait réussir. Tout reste qu'une question de logique et de fonctionnement interne au Framework ou cms en tâtonnant ou en regardant quelques tutoriaux à droite à gauche il n'est pas difficile de mettre en place un site avec un Framework ou cms.

Je ne dis pas que le site en question serait développé de manière efficace ou bien pensé mais que le résultat serait là.

Si je dis c'est parce-que justement duffJohn semblait-dire qu'il fallait déjà être très bien calé et avoir une logique imparable pour utiliser un Framework.
Je pense bien que non j'en ai déjà fait l'expérience avec des personnes ne s'y connaissant pas du tout en PHP mais en leur expliquant le principe du Framework en l'occurrence Cakephp il s'en sortait certes c'est pas l'idéal mais c'est possible.

7508e0d32d3964ffbb8e14482ca62b0d?s=200&r=pg&d=mm
theshadoo, 17-08-2013 19:56:12 - Répondre

@benjamin derepas. Au contraire ce que tu me dis "Que se soit pour un site type blog, portail, ou même app web complète, je l'utilise" prouve que tu n'as pas compris quand il s'agit de choisir une techno en fonction du besoin. Ce n'est en rien ridicule au contraire, ce qui est très ridicule c'est d'utiliser un framework pour créer un simple blog et j'en passe alors que des cms font tout à fait l'affaire.
Ce qui est ridicule c'est de ne pas comprendre les limites d'un framework selon le besoin que l'on a. N'importe quel professionnel ne va pas se tourner vers codeigniter pour développer une application complexe où plusieurs dev seront amené à programmer dessus et où le cycle de vie de l'application devra être le plus long possible sans avoir besoin de recommencer à zéro.
C'est vraiment un manque de bon sens ! C'est comme certain dev anti cms alors que les mecs n'ont jamais vraiment programmé sous un cms techniquement bon au niveau des possibilités et qui jugent sans savoir de quoi ils parlent.
Revoit vraiment ta prog très sincèrement car la conception doit faire partie intégrante d'un développement et un développeur qui a la charge de concevoir et d'architecturer une application d'envergure ne doit pas se tourner vers des outils qui ne sont pas recommandé.
Ais-je dis que CodeIgniter était un mauvais framework ? NON ! Donc il faut savoir lire et ne pas faire de hors sujet, si codeigniter n'était pas si limité pourquoi des branchs annexe se sont créé ??? Je ne parle même pas de fork mais bien de framework développé par des dev qui faisait parti de la communauté de codeigniter bien longtemps avant (certainement) que tu ne te mettes sur codeigniter.
Faut faire preuve de bon sens je le répète.

@Xtr3me: "semblait dire"... Mais justement ce n'est pas ce qu'il disait. Et c'est indéniable qu'il faut avoir un niveau suffisant en php et poo pour pouvoir s'attaquer à certain framework de gros calibre. C'est simple tu entendras pas mal de dev qui pourrait te dire "je n'y comprends rien". Développer sur un framework assez complexe cela n'empêche que cela te fait évolué en php et conception mais la personne mettra bien plus de temps ou aura quelques lacunes sur certaine logique.
J'ai souvent constaté que des développeurs qui avaient x années d'expériences ne croyaient pas en certains cms ou framework, développaient plus dans leur coin sans s'ouvrir à internet au delà de la doc php.net, c'est bien dommage car ça aide à entrevoir d'autres possibilités qui te feront avancer plus.

26574
Benjamin Derepas, 22-02-2014 12:23:42 - Répondre

D'après toi on est obligé d'utiliser par exemple, WP pour un blog ? Ou Prestashop pour un e-commerce ?
C'est surement, à titre personnel, le point de vue le plus stupide qu'un programmeur m'ai jamais dit, sans te vexer :s .
Pour ma part, j'ai travailler essentiellement sur Typo et Drupal / Presta comme CMS, et bien qu'avec moins d'expérience sur ce domaine je pense que toi, ou d'autres développeurs, NON je n'aime pas les CMS. Car ils t'imposent une base de travail (ce qui a du bon de temps en temps je l'admet), et pour ma part, je préfère créer à partir de zéro, avoir les mains dans le cambouis dans le début . Mais je dois avoir un coté sado-maso assez prononcé comme le dit mon chef de projet =D

8653037aa0ca688e90a906b4b0a574f5?s=200&r=pg&d=mm
lmorel3, 14-08-2013 20:15:02 - Répondre

Je pense personnellement que ça dépend de la taille du projet :)

PS : "incluant", pas "inclueant" ;)

28abe25820591c88526ab02fb796f019?s=200&r=pg&d=mm
TheNawaKer, 14-08-2013 19:53:26 - Répondre

Une très bonne mise au point sur l'utilité d'un framework.