IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Pattern decorator et membre de classe


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut Pattern decorator et membre de classe
    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().
    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);
     }
    }
    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
    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();
     }
    }
    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.
    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!

  2. #2
    Invité
    Invité(e)
    Par défaut
    jmen suis tiré avec des références

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public function Linker(){
     
      if($this->linker){
       $this->js = &$this->linker->js;
      }else{
       $this->js=array('lol','fruit');
      }
     }
    et dans le constructeur fils, j'appele le constructeur parent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public function LinkerWithCompression(){
     //stuff
     parent::_construct();
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/02/2006, 18h30
  2. Réponses: 3
    Dernier message: 12/01/2006, 22h26
  3. [POO] vider un array membre de classe
    Par jlf dans le forum Langage
    Réponses: 2
    Dernier message: 20/10/2005, 11h54
  4. Problèmes de fonctions membres de classe templates, gcc3.3.6
    Par yves.dessertine dans le forum Autres éditeurs
    Réponses: 12
    Dernier message: 17/10/2005, 22h36
  5. [Design Patterns] Decorator avec Swing ?
    Par herve91 dans le forum AWT/Swing
    Réponses: 10
    Dernier message: 09/10/2005, 15h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo