Re: Test du nouveau type d'évenemen t
Eric Daspet <[email protected]> Wed, 07 Apr 2004 20:50:29 +0200
| Newsgroups | gmane.comp.web.blogv2.devel |
|---|---|
| Message-ID | <[email protected]> |
Olivier Pascal wrote:
> Disons que ça complexifie les choses pour pas grand chose on dirait. Tu as des
> exemples d'autres interfaces, Ã part http et mail ?
Moi oui : le FTP (ce que j'utilisais pour ma v1)
> En fait je proposais juste de standardiser la communication dans l'appli. Pour
> gérer une autre interface on pourrait juste ajouter un module avant UriParser
> pour convertir "lire tel article de telle section sans les commentaires" en
> "/section/article?commentaires=non". C'est un bon compromis, AMHA. Ãa
> permettrait aussi de fonctionner sur plusieurs interfaces en parallÚle, http
> et mail par exemple.
Standardiser la comm dans l'appli c'est justement ce que je voulais
faire avec UriParser : il interprête l'URL pour construire un objet
interne standardisé que je nommais bêtement "requete interne" pour le
distinguer de la requete http.
Techniquement si on veut marcher par mail il suffit de remplacer
UriParser par un truc qui lit les mails et construit la requête interne
à partir de ça.
> Ce n'est qu'un exemple; dans la réalité il faudrait plutÎt poser un filtre '*'
> pour le core et le surcharger au besoin avec les autres modules, ou mettre en
> premier un filtre genre "^/\S{2}/" pointant vers un gestionnaire qui définit
> la langue par exemple.
L'optique que j'avais c'était plus d'avoir un module qui gÚre la langue
prendre la main avant le UriParser, récupérer le préfixe de langue, le
virer de l'url et remplir un attribut "langue" dans la requête interne.
On peut ainsi surcharger comme on veut, l'air de rien.
> Vous avez une idée pour passer directement au module ciblé sans passer par la
> phase d'initialisation (d'interprétation de l'uri entre autres) de tous les
> modules précédents ?
Tu fais un script d'init par type d'accÚs, simplement. La méthode Web
est juste un événement du contrÎleur qui sera appelé en premier.
En gros sur une requête Web on appelle web.init.php qui lance
l'évennement "Web" dans le controleur. Cet événement contient UriParser
et toute la suite des autres gestionnaires.
Rien n'empêche d'avoir un script d'init qui lance un module d'un autre
nom au départ (genre le script de gestion mail qui lance un événement
"mail"). La file de gestion principale n'a rien de particulier outre le
fait qu'elle est appelée en premier.
Mais effectivement, on n'a rien à gagner à ce que des modules autres que
les modules d'interprétation d'URL touchent à l'URL. Ãa ne coute rien
de garder l'abstraction, interpréter l'url et tout mettre dans un objet
interne. Les autres gestionnaires s'interfaceront avec cet objet, pas
avec l'url. Si on veut faire autre chose il suffit de remplacer le début
de la chaîne, pas de tout recoder.
--
Eric