
Il est désormais possible d’implémenter des moteurs capable de générer la représentation (xhtml, open-office, vcard, etc) d’une ressource (un objet métier).
Comment les utiliser ?
Quels sont les avantages des moteurs de rendu ?
Comment en implémenter de nouveaux ?
Le code utilisé lors de l’utilisation d’un moteur de rendu est toujours semblable à celui-ci :
On peut retenir deux grands avantages :
Le code dédié à la génération de la ressource n’est chargé qu’au moment où il est nécessaire.
Il est très aisé d’implémenter de nouveaux moteurs de rendu.
Toute la logique des moteurs de rendu se trouve dans le répertoire /ecrire/include/bd/Renderer/.
Ce répertoire compte un sous-répertoire par type de ressource. Chacun de ces sous-répertoires contient un fichier par moteur de rendu pour la ressource.
En résumé : un moteur de rendu est une classe héritant de la classe de base Metier_Renderer ; nommée Metier_Renderer_%Ressource%_%Format% et déclarée dans le fichier /ecrire/include/bd/Renderer/%Ressource%/%Format%.php
Un moteur de rendu doit implémenter au minimum une méthode render() qui doit renvoyer la représentation litérale de la ressource associée.
Dès que l’instance de ressource à accepté ( $ressource->accept($renderer); ) le moteur, celui-ci à accès à la ressource par l’intermédiaire d’une propriété d’objet $_visited .
Par exemple, comment implémenter un moteur capable de représenter un auteur au format texte ?
Contenu du fichier /ecrire/include/bd/Renderer/Auteur/Txt.php :
Utilisation du nouveau moteur de rendu :
Cela affichera une représentation du type :
C’est aussi simple que ça. Il ne reste plus qu’à implémenter des moteurs de rendu PDF, vCard, OpenOffice, CSV, etc.
Au boulot ;)
Ces moteurs de rendu sont une implémentation de la design pattern Visitor. Plus de détails à ce sujet : http://exciton.cs.oberlin.edu/javar...
Ce système est disponible à partir de SPIP-Agora 1.2.2 Beta 7.