Zend_Db_Table_Plugin

Ce week-end je m'apprêtait à développer un système de plugin pour Zend_Db_Table quand j'ai eu la présence d'esprit de consulter la feuille de route du ZF (http://framework.zend.com/roadmap). Bien m'en a pris car ce composant est justement prévu pour la prochaine version du framework (1.10). Il a même failli être intégré à la 1.9.

Ce nouveau composant, dont vous pouvez consulter la proposition sur le Wiki du projet, va nous permettre d'une façon similaire aux aides d'action, d'injecter en cours d'exécution et/ou à la demande des fonctionnalités à nos modèles. On va donc pouvoir plus facilement partager du code entre les différentes classes qui gèrent la persistance des données.

Il y a de multiples applications. On peut par exemple s'en servir pour mettre à jour systématiquement certains champs d'une table (date de création/modification de l'enregistrement), mettre en cache les résultats d'une requête, enregistrer des événements dans des journaux, mettre à jour un index de recherche, gérer ses structures arborescentes (nested set). C'est un mécanisme qui se rapproche des comportements (behaviors) proposés par Doctrine.

C'est donc une belle avancée pour Zend_Db, qui en avait bien besoin car il faut admettre que ses fonctionnalités sont quand même peu avancées par rapport à la concurrence (Doctrine et l'ActiveRecord de Rails pour ne citer qu'eux).

Sinon avec la 1.10, on devrait avoir également :

  • Zend_Cache_Backend_Static qui devrait permettre de placer des pages en cache. A la différence de Zend_Cache_Frontend_Page, le moteur de PHP ne sera pas sollicité pour servir ces pages, seul le serveur Web interviendra ce qui permet des performances optimales. L'utilisation de ce composant nécessitera une modification des règles de réécriture du serveur Web.
  • Zend_Entity & Zend_Db_Mapper qui permettront le développement Domain Driven, qui je l'avoue est une notion qui m'est encore assez floue pour moi mais qui semble être très à la mode en ce moment. Ce mode de développement permet un meilleur découplage entre les objets métier et la couche de persistance (corrigez moi si je me trompe).
  • Zend_Filter_Null qui permets de convertir en null une valeur vide (chaine vide ou zéro) pour une insertion correcte dans la base de données en conjonction avec Zend_Form (pas le composant du siècle, mais très utile)
  • Plusieurs validateurs, notamment de numéro de téléphone et de numéro de carte de crédit
  • Plusieurs aides de vue, notamment Zend_View_Helper_Currency pour afficher dans plusieurs formats de monnaie et Zend_View_Helper_TimeSince et Zend_View_Helper_TimeUntil pour afficher des dates sous la forme il y 5 minutes ou dans 3 jours.

Cette nouvelle version nous promets donc des nouveautés fort utiles. Elle devrait sortir dans le courant du mois de septembre.

Ajouter un commentaire