Bonjour,
Je viens de tomber sur un petit probleme que je n'arrive pas à résoudre.
J'ai un "linker" qui se charge d'inclure des fichiers js, css.
Je choisi d'ajouter à ce linker une compression des fichiers.
Je trouve que ca vaut le coup d'utiliser un petit decorator.
Voilà pour le contexte.
Les problemes :
je me sers d'un membre $this->js au sein de ma classe de base, qui est un array().
Dans ma classe decoratrice, vous sentez venir le truc, j'appele $linkerWithCompression->lol(); qui maffiche un array('lol','fruit') au lieu d'un Bunny.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 class Linker{ protected $js = array(); public function Linker(){ $this->js=array('lol','fruit'); } public function lol(){ var_dump($this->js); } }
L'idée de base que j'ai, c'est de changer le type de l'array(), et de mettre une instance de classe type une collection. De fait, le pointeur sera le même et je continuerai de taffer sur les mêmes données, qqsoit le décorateur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 class linkerWithCompression{ protected $js = array(); protected $linker; public function linkerWithCompression($linker){ $this->linker=$linker; $this->js=array('Bunny'); } public function lol(){ $this->linker->lol(); } }
Mais je trouve que c'est assez limité, car pour chaque membre de classe, il faudrait avoir une collection, pis réécrire les methodes push, etc de l'array.
Ya-til moyen de faire partager les données des différents Linker? Je pensais à des pointeurs, mais je suis moyennement convaincu vu que dans la doc, on en parle que pour les fonctions.
D'avance merci!

Répondre avec citation
Partager