Framework PHP 2.0 : que réserve 2010 pour le Zend Framework et Symfony ?

Framework PHP 2.0 : que réserve 2010 pour le Zend Framework et Symfony ?

Après le Web 2.0, l'accessibilité 2.0, voici venu le temps des frameworks PHP 2.0. Avec l'arrivé de PHP 5.3 dont les apports ont été en grande partie motivés par l'émergence des frameworks, les frameworks revoit leur code en profondeur pour offrir une qualité qui devrait apporter un gain de productivité important à tous les développeurs au prix d'un refactoring important.

PHP 5.3 : une nouvelle version majeure

PHP 5.3 aurait très bien pu s'appeller PHP 6 au vu des nouveautés qu'apporte cette version. John Mertic a publié quelques articles très intéressants sur le sujet. Guillaume Rossolini en fait une belle traduction où il présente :

  • Les modifications apporté au modèle objet (Late State Binding, Garbage Collector, SPL, ...)
  • Fermetures et les fonctions lambda (mon coup de coeur)
  • Les namespaces
  • Les archives Phar
  • Migration depuis PHP 5.2

Ces nouveautés vont permettre de faire basculer les frameworks dans un monde où le bricolage et l'amateurisme des versions antérieurs de PHP n'auront plus leurs places et le règne de la programmation orientés objets et la programmation fonctionnelle pourra débuter. Le passage des frameworks à PHP 5.3 est donc l'occasion rêvé pour refondre ces petits bijoux de la programmation Web.

Des évolutions majeures à venir

Fabien Potencier nous a présenté la pureté et l'élégance de son prochain framework. La bonne nouvelle vient de l'abandon du fullstack obligatoire qui finalement apporte plus d'ennui qui n'apporte de solution. On pourra toujours l'utiliser mais on pourra également utiliser Symfony comme bibliothèque de Composant. Son mode de fonctionnement se rapproche de plus en plus de ceux que l'on trouve dans le Zend Framework qui lui a contrario à introduit Zend_Tool et Zend_Application pour faire du fullstack.
On peut regretter le changement d'avis sur l'usage des moteurs de templates (voir mon avis sur la question). Enfin, vu avec quel insistance Sensio relançent l'injection de dépendance, il est certain que cette notion sera au coeur du système dans les futures versions, ce qui est loin de me déplaire.

Son concurrent le plus sérieux, le Zend Framework n'est pas en reste.La roadmap du ZF 2.0 est plutot ambitieuse et les modifications devrait être profonde. Visiblement, la programmation par contrat si cher au langage Eiffel, devrait occuper une place plus importante.

L'utilisation de l'anti-pattern singleton devrait être réduite au maximum. Par contre, et je sens que l'utilisation du goto dans l'implémentation de certains composants et notamment tout ceux qui utilisent des machines à état fini (Zend_Search_Lucene, Zend_Markup, ...) Zend va de nouveau faire couler beaucoup d'encre et relancer le débat initié par 2 des plus des plus informaticiens Edsger Dijkstra ("Go To Statement Considered Harmful") et Donald Knuth (structured programming with goto statements) dans les années 1970.

Aujourd'hui

Zend Framework et Symfony annonce tous les 2 une version 2 pour l'année 2010. Il me parait difficile de partir sur un projet sur des technologies qui vont subir de telle changement dans l'année qui vient.
Finalement, ça nous laisse le temps de s'intéresser à d'autre framework et plus particulièrement Code Igniter dont la couverture fonctionnelle est plus réduite mais peut être plus adapté à des petits sites ou des petites applications. La compatibilité PHP 4 lui permet même d'être utiliser sur de très vieux serveur. C'est en tout cas la technologie qui va très certainement propulser mon blog l'année prochaine.

Commentaires

metagoto

Je ne vois pas où est le problème avec la présence de goto dans certains composants. Ce que propose Matthew Weier O'Phinney avec sa FSM pour le dispatching est une bonne idée. Ca mérite une implémentation, au moins pour voir comment ça se comporte. Par contre, nous sommes d'accord, en dehors d'une FSM, l'usage de goto est suspicieux.

Pour revenir à ZF 2.0, je trouve courageux le constat effectué par Matthew: ZF 1.x est tout sauf séduisant. La partie MVC doit être repensée de fond en comble.

Matthieu

Ca, c'est de la réponse de luxe !! avec une charrette de liens tous plus utiles les uns que les autres ! Mais comment fait-il ? Moi, pour faire une réponse comme ça, ça me prend bien 1/2 heure pour retrouver tous les liens !! Bon donc, tu pense que si j'utilise CodeIgniter, même avec Doctrine et Zend_auth, ça reste plus simple que de passer directement à Zend ou Symfony ?

Sylvain FIX

Pour ce qui concerne le modèle de données, il est possible d'utiliser Doctrine en lieu et place de l'abstraction de base de données fournit par défaut.

Par ailleurs, la documentation donnent comme exemple un système simpliste de gestion d'utilisateurs.

Une autre alternative est d'utiliser le Zend Framework en tant que bibliothèque de composant :

  • Zend_Db : fournit une abstraction de base de données suffisamment complète pour faciliter l'exploitation de la base de données
  • Zend_Acl et Zend_Auth : fournissent toutes les briques nécessaires à la gestion des utilisateurs . j'avais écrit un article sur ce sujet il y a quelques temps
  • Zend_Form : fournit tous les éléments pour une génération automatique de tes formulaires

Il est clair que symfony ou zend sont bien plus puissant en tant que framework fullstack, mais le temps d'apprentissage est aussi beaucoup plus long. Code Igniter répond généralement à une grande partie de besoins en conservant une simplicité mais rien n'empéchent d'aller piocher des composants plus évolués dans les autres frameworks.

Matthieu

Je profite de l'expertise qui semble régner ici (et du peu de traffic dans les commentaires), pour poser une petite question : Après avoir lu ce post, je me suis rué sur Code Igniter, vu que ça faisait un moment que j'hésitais dans le choix de mon framework. J'ai commencé à regarder un peu, et je me suis vite aperçu qu'il manquait des fonctions dont j'avais besoin : - une gestion des relations un peu pointue (j'ai une base avec des jointures dans tous les sens, et même une agrégation avec la table d'une autre base) - une gestion des users, de l'authentification et des droits (genre ACL) Alors bien sûr, il existe des third party plugins qui ont l'air de faire ça, mais c'est très difficile de savoir s'ils sont complètement fonctionnels, et s'ils seront toujours maintenus demain. Sachant que mon projet est une application métier relativement simple : j'ai plein de tables, qui faut juste pouvoir éditer/consulter de manière ultra user friendly, avec différents niveaux de droits. Plein de jointures, plusieurs par table. Pas de problème de montée en charge, pas de problème d'url, pas d'internationalisation, pas de charte graphique... Et bien sûr, j'ai juste quelques jours pour apprendre à me servir du truc, sachant que j'ai un rendu pour fin janvier. Alors, est ce que je reste sur Code Igniter pour profiter de sa simplicité, en utilisant les plugins, ou bien est-ce qu'il vaut mieux que je parte sur Symfony, qui a les fonctions qui me manquent en interne, et dont les fonctions de génération de html me suffiront dans la plupart des cas ? Merci !

Matthieu

Ici, aussi, un autre lecteur ! :+) Au sujet de goto, je signale la doc de PHP qui vaut le détour : http://fr.php.net/manual/fr/control-structures.goto.php

Brice

Joomla framework n’a rien a envier à ces framework PHP, 2010 sera son année. Le principal avantage de développer avec Joomla, c’est qu’il dispose d’un CMS très puissant, et même si votre projet n’est pas de développer un CMS mais une application métier,

Il est tout fait possible d'utiliser l'interface très simple de joomla pour monter le design du projet et en suite développer des composants qui s'occupe de la partie métier.

Bref, le générateur d'admin de Symfony fait pâle figure à coté, et Zend ne propose pas grand chose de ce coté la.

Adrien M.

Salut,

Je découvre ton blog, j'aime beaucoup le ton. À mi chemin entre technique et analyse d'enjeux/intérêts, tout ce que j'aime (et que je traite aussi également).

En ce qui concerne les approches à venir des frameworks, je trouve que sur le fond ça ne va pas apporter grand chose car on ne fait que boucler une boucle, celle de la réutilisabilité. On décompe en composants, on utilise ces composants, on arrive à une brique compact qu'on re-découpe en composants.

Bref, bien joué. Tu as un nouveau lecteur.

Adrien

Julien

Content de voir que CodeIgniter intéresse de plus en plus de monde, c'est un framework formidable de part sa simplicité et sa rapidité. Il ne joue clairement pas dans la même catégorie que ZF et Symfony mais c'est une alternative viable pour les petits/moyens projets.

Ajouter un commentaire

Plain text

  • Aucune balise HTML autorisée.
  • Les adresses de pages web et de courriels sont transformées en liens automatiquement.
  • Les lignes et les paragraphes vont à la ligne automatiquement.
By submitting this form, you accept the Mollom privacy policy.