Pour compléter un peu ce qui a été dit, on discerne aujourd'hui généralement "deux" types de framework : les "fullstack" et les "micro-framework".
Ceux qu'on nomme "fullstack" fournissent tout les composants nécessaires (ORM, moteur de template...) de manière assez intégré. On pourrait citer Django, Rails, Symfony...
Avantages : la documentation est généralement centralisée et l'intégration des composants entre eux permet d'être plus productif dans le développement de fonctionnalités (avec Rails, avec son principe "Convention over Configuration", du comportement sera créé automatiquement sans avoir à écrire beaucoup de code, en suivant les conventions de nommage des fichiers et variables par exemple. Django lui propose la génération aisée d'une interface d'administration complète en écrivant là aussi peu de code).
Désavantages : si on a des besoins un peu plus spécifiques (qui peuvent apparaître avec le temps), il est parfois difficile de sortir du chemin tracé par le framework. Il est notamment difficile de changer certains composants au sein du framework (changer d'ORM dans Django ne permettra plus de profiter de la génération automatique de l'interface d'administration, etc).
Enfin les "microframework" comme Sinatra en Ruby, Flasks en Python (pour ne citer qu'eux, ils sont légions). Eux fournissent peu de composants par défaut, ou si c'est le cas, en changer ne pose généralement aucun problème. De manière générale on pourrait dire qu'ils offrent plus de souplesse, mais moins de fonctionnalités magiques que peuvent proposer les "fullstack".
Niquel pour des besoins spécifiques, ou pour éviter de sortir l'artillerie lourde pour une petite application Web, etc.
Un framework qui sort un peu du lot même si je le rapprocherai des "microframework", c'est Pyramid, où chaque composant est interchangeable (aucun ORM d'imposé, aucun moteur de template... bien que certaines combinaisons de composants sont proposées par défaut). Je ne rentrerai pas dans les détails.
Avantages : ultra-souple, développement très rapide d'un "HelloWorld" (c'est un sport national chez les "microframework"

).
Désavantages : intégration moins poussée, pas de comportement magique (on reste assez explicite sur ce qu'on veut faire), et documentation éparpillée (l'ORM, moteur de template, validateur de formulaires... vont être des projets sans lien entre eux et auront leur propre doc').
VonRobot a écrit:
pourquoi cette "haine" du PHP ?
Tu comprendras le jour où tu goûteras à d'autres langages. À ce moment tu diras "le PHP, plus jamais !" :p Disons que la bibliothèque standard n'a aucune cohérence (rien que le nom des fonctions c'est du délire), et le comportement
parfois difficile à cerner.
_________________
Debian Sid (Xfce) - DELL Vostro 1510
OERPLib - Bibliothèque Python pour faciliter la communication avec OpenERP