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