Table des matières

Pxxo_Widgets_Decorator

Les décorateurs sont des objets qui implémentent le motif de conception Décorateur.

Principe

Classiquement un objet PXXO peut avoir N objets fils. Dans le cas d'un objet widget, c'est la méthode putwidget qui permet d'ajouter un fils.

Exemple


Objet A    | Objet A
           |           \_ Objet A.1
           |                         \_ Objet A.1.1
           |           \_ Objet A.2
       putWidget

Avec la notion de Décorateur, un objet va pouvoir changer de parent. Il va pouvoir s'ajouter autant de parents qu'il le souhaite. Dans le cas d'un widget, c'est la méthode addDecorator qui permet d'ajouter un père.

Exemple


Objet A    | Objet 1
           |     \_ Objet 2
           |             \_ Objet 3
           |                     \_ Objet A
           |
       addDecorator

Typiquement, l'objet est décoré par plusieurs autres objets.

Usage

On associe un décorateur à un widget avec la méthode addDecorator de l'objet à décorer.

Exemple

 
$objet = new ObjetPxxo;
 
 // ajout d'un décorateur avec son nom
$this->addDecorator('Decorateur_1'); 
 
// ajout d'un décorateur avec son instance
$this->addDecorator(new Decorateur_2); 
 

Implémentation

Un objet décorateur n'est rien d'autre qu'un objet Pxxo avec un attribut particulier nommé widget.

 
class Decorateur extends Pxxo_Widgets
{
 var $widget;
 var $_params = array('widget');
 function __construct($params)
 { 
  $this->Pxxo_Widgets($params, __FILE__);
 }
 function defaut() 
 { 
  $this->setTemplate('defaut', 'border.php.html');
  if ($this->widget)
   $this->putWidget('OBJET', $this->widget);
 }
}

Package

Le package Pxxo_Widget_Decorator contient 6 décorateurs prêt à l'emploi :