Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] filtres multiples les uns à la suite des autres, comment feriez-vous ?

Posted by Julien on 04/16/2009 12:08

Salut,

j'aurais besoin d'effectuer des traitements les uns à la suite des autres, sur une chaine de caractères par exemple. La particularité c'est que ces traitements (nombre, nature) ne sont pas connus à l'avance et seraient déclarés comme des plugins.

Par exemple, dans un texte saisi en wysiwyg, je veux transformer les liens et les urls des images, mais peut-être d'autres traitements qui seraient déclarés plus tard, en rapport avec d'autres modules, etc...

Bref, le principe de jEvent. La seule différence c'est que je voudrais que le param passé au second filtre soit le résultat du premier filtre, et ainsi de suite (alors qu'avec jEvent, les listeners reçoivent le paramètre d'origine passé lors de la notification).

J'ai plusieurs pistes :

  1. sans rien changer au code jEvent actuel :
    1. utiliser jEvent, chaque listener ramène un duo classe/methode puis on applique ces méthodes via une boucle
    2. utiliser jEvent, avec pour param un objet standard (stdClass) avec la chaine de caractère dans un propriété, ce qui fait que jEvent::getParam() me ramènera l'objet (par référence implicite) et je peux donc modifier la même propriété via tous les listeners
  2. en modifiant un peu le code de jEvent :
    1. jEvent::getParam() devrait retourner le paramètre par référence
    2. rendre la propriété jEvent::_params publique afin de pouvoir y toucher dans les listeners.
  3. développer un truc comparable à jEvent, mais qui chainerait les listeners

Bref, si vous avez ce genre de besoin (j'espère avoir bien expliqué), comment faites vous ?


Julien

  [Opened] Re: filtres multiples les uns à la suite des autres, comment feriez-vous ?

Reply #1 Posted by laurentj on 04/17/2009 18:11

Salut,

je pense que la solution 1.1 est la plus simple non ?

  [Opened] Re: filtres multiples les uns à la suite des autres, comment feriez-vous ?

Reply #2 Posted by Julien on 04/17/2009 18:35

ben au final je trouve ça lourd : le listener n'est là que pour indiquer quelle action il faudra faire via la classe::methode(). Il faut ensuite faire la boucle sur les méthodes retournées partout où l'on appelle l'événement. Pour chaque itération, une classe est instanciée et la méthode exécutée.

Avec un "patch" genre solution 2.1, le traitement se ferait directement dans le listener (qui peut au besoin appeler des classes, c'est pas le problème), pas de boucle, pas de méthode spécifique dans une autre classe.

Bref, est-ce que sur le principe c'est envisageable de faire la modif 2.1 (je peux proposer le patch qui va bien), je voulais surtout savoir si l'idée était intéressante.

Merci pour ton temps.


Julien

 
Page
  1. Re: Utiliser le DAO à l'extérieur du site? >
  2. Re: filtres multiples les uns à la suite des autres, comment feriez-vous ?