Zend vient de mettre en ligne un site dédié au Zend Framework et profite de l’occasion pour rendre public une première preview.

Commençons par les prés requis. Le Zend Framework nécessite au minimum PHP 5.0.4. Point de salut pour les utilisateurs de PHP 4 donc, mais cela n’est pas une surprise. De plus et dans l’immédiat, vous devez disposer du support de PDO si vous envisagez un interfaçage avec un système de gestion de bases de données. Le support de PDO peut sembler un pré requis fort, c’est en tout cas mon avis. A ce titre, le précédent sondage en ligne sur PHPIndex laissait entendre qu'un faible pourcentage de développeurs l'utilisait (16% de oui contre plus de 52% de non). Il semble que l’équipe en charge de développer et maintenir le Zend Framework envisage la possibilité de lever cette limitation. Mais aujourd’hui, ce n’est pas le cas.

Coté licence, le Zend Framework dispose d’une licence particulière. Elle s’inspire de la licence BSD ou Apache. Elle n’est pas contaminante (virale). Vous n’êtes pas tenu de reverser le fruit de vos développements. Vous pouvez utiliser le Zend Framework dans le cadre de projets commerciaux. La seule restriction porte sur l’usage des termes « Zend » et « Zend Framework ».

Passons maintenant au contenu de cette première preview. Qu’y trouve-t-on ?

Zend_Controller et Zend_View

Nous le savions déjà depuis quelques mois, le Zend Framework propose les composants de base pour mettre en œuvre une approche MVC (Modèle Vue Contrôle). Je ne m’exprimerais pas en détail sur l’intérêt de la chose. C’est hors de propos ici. J'y vois surtout un impact marketing en proposant une réponse concrète à RoR (Ruby on Rails) qui a largement contribué à mettre en avant cette approche. L'effet de « buzz » me semble ici évident, mais cela n'engage que moi.

Zend_Db

Ce composant repose sur PDO. Il est en charge de l’interfaçage avec les principaux systèmes de gestion de bases de données. Tout du moins, ceux actuellement supportés par PDO (ce qui exclu, dans l'immédiat, mysqli et oci8).

Zend_Feed

La syndication est à l’honneur. Ce composant vient simplifier la gestion des flux RSS, Atom, etc. On peut cependant se demander si un tel composant à une place prioritaire dans un framework. Personnellement, cela me semble assez accessoire.

Zend_HttpClient

Ce composant a pour ambition de fournir une interface permettant d’exécuter des requêtes HTTP de type GET, POST, PUT ou encore DELETE. Je serais tenté de formuler la même remarque que précédemment. Et puis, un tel composant ne fait-il pas double usage avec l’excellente extension Curl ?

Zend_InputFilter

Une bonne initiative que celle de ce composant. Il propose les méthodes de base pour filtrer les entrées. Par exemple, il permet de vérifier qu’une donnée que l’on reçoit par POST est bien conforme à un type attendu (isDate, isAlpha, etc.). En regardant les sources de ce composant, j’ai dénombré plus de deux douzaines de méthodes dors et déjà disponibles, dont certaines, assez intéressantes (isGreaterThan, isLessThan, isBetween, isOneOf, etc.). S’il est (correctement) utilisé, ce composant devrait largement contribuer à améliorer le niveau de sécurité d’une application.

Zend_Json

Ajax est également à l’honneur. Derrière JSON (JavaScript Object Notation) se cache un format d'échange de donnée sous forme textuelle. Sans rentrer dans les détails, un objet ou même un tableau JavaScript ne ressemble en rien à un objet ou un tableau PHP. Dès lors, lorsque l’on désire échanger des données un peu évoluées entre le client et le serveur, dans le cadre d’applications utilisant Ajax, les ennuis commencent. JSON apporte une alternative en proposant un format permettant de sérialiser ces données. C’est là qu’intervient le composant du Zend Framework en offrant un moyen simple de sérialiser une structure PHP au format JSON.

Zend_Mail et Zend_Mime

Ces composants permettent d’envoyer des emails, que ce soit au format texte, html, avec ou sans pièce jointe. J'ai jeté un œil rapide et j’ai testé, cela marche plutôt pas mal.

Zend_Pdf

Le Zend Framework propose un composant dédié à la manipulation de PDF. Et quand je dis manipulation, c’est au sens large puisqu’il semble qu’il soit possible de générer un PDF, mais aussi de modifier un PDF existant. Et la fonctionnalité de modification est une bonne surprise puisque, à ma connaissance, la seule solution crédible pour modifier un PDF existant restait, à ce jour, la PDFLib + PDI. A tester donc, je n’ai pas fouillé plus en détail.

Zend_Search_Lucene

Ce composant est une réécriture en PHP5 du moteur de recherche full text Apache Lucene écrit en Java. J’ai plutôt un a priori positif sur ce composant. A première vue, cela me semble une bonne idée. A l’image du composant précédent, celui-ci se posera peut-être comme une alternative crédible à des outils tels MnoGoSearch, Ht://Dig ou la recherche full text de MySQL.

Zend_Service: Amazon, Flickr, and Yahoo!

Le Zend Framework propose de quoi « consommer » facilement des Web Services avec les 3 principaux acteurs que sont Amazon, Flickr et Yahoo. Personnellement, je n’en aurais pas usage. Là encore, un tel composant à t-il une place essentielle dans un framework ? Modulo l'aspect pratique, cela me semble décidement bien secondaire et plutôt gadget.

Zend_XmlRpc

En parlant de Web Services, il manquait un soupçon de SOAP. C’est chose faites avec cet ultime composant présent dans cette preview et qui met en œuvre les mêmes fonctionnalités que XML-RPC.

Alors, en l'état, que penser du Zend Framework ?!

Sans le recul nécessaire, mon avis est aujourd’hui partagé (comme il l'était hier). J’y vois quelques composants qui pourront s’avérer utiles (Zend_InputFilter, Zend_Pdf, Zend_Search_Lucene, Zend_Mail et Zend_Mime, etc.). Je déplore un peu l’obligation de disposer du support de PDO pour tirer partie de Zend_Db et les performances de ce dernier reste à mesurer. Enfin certains composants me semblent d’un intérêt plus secondaire (Zend_Feed, Zend_Service) voir franchement dictés par des impératifs marketing (Zend_XmlRpc, Zend_Controller et Zend_View, Zend_Json quoique intéressant, etc.).

Maintenant, si le Zend Framework se devait d’apporter une réponse concrète à l’approche MVC, aux Web Services et à Ajax (qui a dit Web 2.0...) pour être fréquentable, c’est en bonne voie. J’aurais personnellement préféré avoir des réponses à d’autres problématiques récurrentes au développement Web, comme la mise en forme et le traitement de formulaires. Rassurez-vous, un embryon de composant figure déjà dans l’incubateur du Zend Framework. C’est donc prévu. Mais cela m’aurait semblé plus essentiel. Tout comme un composant permettant de gérer les méchanismes d'accès (identifications, authentifications, autorisations, etc., bref ACL). Un tel composant devrait également faire son apparition très prochainement.

Vous remarquerez, du reste, que le site dédié au Zend Framework ne présente aucun formulaire en ligne. Ceci explique cela puisqu’il est intégralement développé avec le Zend Framework. Et puisque l'on parle de lui, à noter qu’il permet de prendre connaissance d’informations complémentaires au travers d’une FAQ et d’un manuel en ligne encore en cours de rédaction. La « roadmap » du Zend Framework y est également décrite. Signalons également qu’une liste de diffusion est disponible ainsi qu’une adresse email permettant de faire remonter d’éventuelles anomalies (il y en a…). Très prochainement, un frontal plus évolué pour la remontée de bug ainsi qu’un accès Subversion seront ouverts.

En clair, le site est à l’image du Zend Framework : en preview ! Et quid de la partie Eclipse ? A ma connaissance, le partenariat entre Zend et IBM devait, certes, porter sur le développement d'un socle standard visant à faciliter le développement d'applications critiques ainsi que leur déploiement. Mais il devait également reposer sur Eclipse comme IDE. Un plugin dédié au Zend Framework doit-il finalement voir le jour ?