Flow3 t il au dessus des autres frameworks PHP ?
Par Clochix le mardi 8 juillet 2008, 02:20 - Technoweb - Lien permanent
En cherchant s'il existait d'autres librairies permettant l'injection de dépendances en PHP, je suis tombé sur un truc peu plus gros qu'une librairie, un framework qui a été annoncé au début de l'année et dont les specs déchirent pas mal : FLOW3. Il est écrit par l'équipe de développement de Typo3, donc ce n'est apparemment pas qu'un élucubration d'un geek mythomane.
Les développeurs de Typo3 ont décidé de ré-écrire entièrement le cœur du logiciel, et de bâtir celui-ci sur un ensemble de librairies génériques, comme eZ Publish sera bientôt basé sur les eZ Components.
Si le développement n'en est qu'à ses débuts (le code n'est disponible que dans subversion - ou dans la forge Typo), la liste des fonctionnalités attendues est assez impressionnante, et l'équipe affiche de grosses ambitions, en n'hésitant déjà pas à comparer leur bébé avec plusieurs des principaux framework en PHP (Zend Framework, eZ Components, Symfony, cakePHP), Ruby (Ruby on Rails) ou Java (Spring).
La présentation annonce que Flow3 utilisera la plupart des concepts en vogue, comme la programmation orientée aspects, le Domain-driven design, le développement piloté par les tests, l'intégration continue...
Les principales briques annoncées sont:
- un entrepôt à objets, qui utilise les patrons de conception "inversion de contrôle" et "injection de dépendances" dont je parlais hier. Cet entrepôt gérera le cycle de vie des objets (instanciation et suppression), leurs dépendances, leur configuration, etc.
- un gestionnaire de configuration
- un framework utilisant les concepts de la programmation orientée aspect. Comme je n'ai toujours pas réussi à me faire une idée claire de ce que c'est, je ne vais pas développer.
- des librairies permettant l'utilisation du modèle MVC
- des librairies facilitant le filtrage et la validation des données
- des librairies de gestion de cache
- un gestionnaire de propriétés d'objets, permettant par exemple d'établir des correspondances entre les attributs de 2 objets, de convertir ces attributs, etc
- un gestionnaire de modules ("packages")
- un gestionnaire de ressources (images, documents, textes, etc), indépendant des implémentations
- des librairies de gestion d'erreurs
- des librairies de gestion de la sécurité
- une API avancée de réflexion
Bref, c'est alléchant. Reste à savoir dans combien de temps une première version sera utilisable, et si l'ensemble adoptera plutôt la philosophie des frameworks Zend et eZ, c'est à dire une juxtaposition de librairies utilisables seules, ou de Symfony, plus intégré (pour ne parler que des produits que je connais).
Commentaires
Tiens, un billet. Ça fait plaisir.
Bon honnêtement le coup du "je rédeveloppe moi-même mon propre framework" ça me fait super peur sur le papier, surtout aujourd'hui avec la richesse de l'offre que l'on connait.
Sinon pour info Symfony 1.1 contient déjà une forme de conteneur d'injections de dépendances sous la forme du fichier factories.yml.
Symfony 2.0 en a un encore plus souple et configurable (lazy loading, scope, références, configurations, etc.), mais il est encore loin de sortir
Monsieur, dans le cadre de notre partenariat d'échange de publicités, je me permettrai à l'occasion de venir moi aussi faire de la réclame dans vos commentaires pour mon camembert au lait cru moulé à la louche sous les aisselles
D'accord avec toi sur la légitime méfiance à avoir. Il faudra attendre que les développement mûrissent un peu pour tester et voir ce que ça a dans le ventre. Mais même si je n'apprécie guère Typo3 (pour de mauvaises raisons), les développeurs ne sont à priori pas des débutants, on peut s'attendre à quelque chose de qualité. Et surtout, si la présentation dit vrai, ce framework peut contribuer à démocratiser des concepts que pour l'instant je trouve assez abscons, comme l'AOP ou le DDD.
Quant à Symfony, j'ai hâte d'avoir le temps de tester le 1.1 mais je suis hélas pour l'instant englué dans de l'eZ Publish :-S