Le 30 juin 2011 09:47, Dsls <[email protected]> a écrit :

> > Si on faisait comme tu le préconises, cela veux dire que lorsque
> quelqu'un
> > crée une nouvelle liste, il devra y placer son constructeur ainsi que ne
> pas
> > oublier de créer son behavior. D'une, ça fait plus de code pour le dev
> (bon
> > c'est une ligne je sais :P) et de deux, il peux très bien oublier de le
> > faire et ainsi priver d'autres plugins de rajouter leurs propres
> colonnes.
> >
> > Tu vois l'idée?
>
> Oui, mais ça ne me plaît pas... une classe générique doit rester
> générique. Si elle contient des spécificités de chacun de ses
> héritiers, ça casse le modèle.
>
> On peut faire différemment : dans ton constructeur admingeneric list, tu
> fais :
>
>        public function __construct($core,$rs,$rs_count)
>        {
>                $this->core =& $core;
>                $this->rs =& $rs;
>                $this->rs_count = $rs_count;
>                $this->context = get_class($this);
>                $this->columns = array();
>                $this->form_prefix = 'col_%s';
>                $this->form_trigger = 'add_filter';
>
>                $this->html_prev = __('&#171;prev.');
>                $this->html_next = __('next&#187;');
>
>                $this->setColumns();
>
>                $core->callBehavior('adminGenericListConstruct',$this);
>
>                $this->setColumnsVisibility();
>        }
>        abstract protected function setColumns() {}
>
> et chaque classe fille surcharge alors setColumns en ajoutant ses
> propres colonnes. On garde alors le behavior générique (on peut même
> l'appeler plus simplement adminListConstruct), et tout baigne...
>

Certes, tu as raison. Je vais faire la modif :)

-- 
Tomtom aka Thomas
_______________________________________________
Dev mailing list
[email protected]
http://ml.dotclear.org/listinfo/dev

Répondre à