Le 15 septembre 2008, Pxxo 5.3

Intégration des Classes du Zend Framework

Les classes du Zend Framework sont maintenant intégrées à Pxxo. Pour éviter les problèmes de cohabitions elles ont toutes été préfixées par "Pxxo_".

Suppression de Pxxo_Config

La classe Pxxo_Config est supprimée !

Config Pxxo

Dorénavant, on accède à la "Config" Pxxo en passant par une variable de classe nommée Registry.

Avant :

 
$path = Pxxo_Config::get('path');
 
Pxxo_Config::set('truc', 'bidule');

Après :

 
$path = $this->Registry->path;
 
$this->Registry->truc = 'bidule';

Variables Globales

Auparavant, on pouvait utiliser Pxxo_config pour stocker des variables globales à une application. Maintenant c'est encore plus simple, il suffit d'ajouter des variables au Registre pour pouvoir y accéder depuis n'importe quel widget.

Avant :

 
require_once 'Pxxo/Config.php';
$config = new Pxxo_Config;
$config->pdo = new PDO(...)
$config->register();
 
$o = new Root();
 
// (...)
 
$pdo = Pxxo_Config::get('pdo');

Après

 
$o = new Root();
$o->Registry->pdo = new PDO(...)
 
// (...)
 
$pdo = $this->Registry->pdo;

Ou

 
require_once 'Pxxo/Registry.php';
$config = Pxxo_Registry::getInstance();
$config->pdo = new PDO(...)
 
 
// (...)
 
$pdo = $this->Registry->pdo;

Ou encore

 
require_once 'Pxxo/Registry.php';
 
 
Pxxo_Registry::set('pdo',new PDO(...));
 
 
// (...)
 
$pdo = Pxxo_Registry::get('pdo');

Widgets autonomes

Pour les widgets autonomes, il peut être utile d'accéder à la "Config" Pxxo avant même que le widget ne soit créé pour cela il suffit de récupérer le registre avec la méthode geInstance :

Avant :

 
require_once 'Pxxo/Config.php';
$config = new Pxxo_Config;
$config->register();
 
$params  =  array( 
    'id' => 1, 
    'uid' => 'test2@test.com', 
    'dsn' => 'sqlite:///'.Pxxo_Config::get('resources_path').'/pxxo_widgets_star.db' 
);
$o = new Pxxo_Widget_Star($params);

Après :

 
require_once 'Pxxo/Registry.php';
$config = Pxxo_Registry::getInstance();
 
 
$params  =  array( 
    'id' => 1, 
    'uid' => 'test2@test.com', 
    'dsn' => 'sqlite:///'.$config->resources_path.'/pxxo_widgets_star.db' 
);
$o = new Pxxo_Widget_Star($params);

Suppression de la méthode $this->putData

Cette méthode est définitivement supprimée. Pour envoyer une variable au template, il suffit d'utiliser la variable $this→View (cf. ci-dessous)

On peut également utiliset la méthode assigne de l'objet View. Pratique pour les migrations.

Avant :

 
$this->putData('truc', $bidule);

Après :

 
$this->View->assign('truc', $bidule);

Ajout de $this->View

La variable de classe $this→View permet d'accéder au moteur de template (Pxxo_View). On peut donc maintenant plus facilement envoyer des données ou des widgets vers le template.

Avant

 
$this->putData('truc', 'bidule');
$this->putWidget('machin', new MonWidget);

Après

 
$this->View->truc = bidule;
$this->View->machin = new MonWidget;

ATTENTION : Dans l'exemple précédent $this→View→machin ne contient pas une instance de Monwidget mais la chaine de caractère produite pas MonWidget.

Ajout de $this->Widgets

En fait la variable $this→Components est renommé en $this→Widgets. Cette variable recense les widgets fils du widget courant.

Pour harmoniser la terminologie, les méthodes suivantes ont été renommées :

  1. loadComponent devient loadWidget (la rétro compatibilité est conservée)
  2. stackComponent devient stackWidget

Maintenant pour ajouter un widget, il suffit de l'ajouter à cette variable.

Avant :

 
$this->putWidget('Mon_Widget', new Mon_Widget(array()));

Après :

 
$this->Widgets->Mon_Widget = new Mon_Widget(array());

Atention: Contrairement à $this→View, ici on récupère l'instance de l'objet et non la sortie produite.

Les widgets sont des décorateurs

Le widget Pxxo_Widget_Decorator est maintenant une coquille vide, car maintenant chaque widget Pxxo est un décorateur potentiel. Pxxo_widget met à disposition la méthode includeDecoratedWidget() qui permet d'inclure si on le souhaite le widget décoré. Pxxo fournit même un template par défaut chargé uniquement d'afficher le widget décoré.

  • void includeDecoratedWidget(string $name = 'WIDGET')

$name correspond au nom de la variable utilisée dans les templates

Exemple :

 
class Mon_Decorateur extends Pxxo_Widget
{
    function __construct($params = array())
    {
        parent::__construct($params,__FILE__);
    }
 
    function index()
    {
        $this->includeDecoratedWidget();
    }
}

Modification de findParentWidget

Ajout du paramètre $onlyfirst à la méthode Pxxo_Widget::findParentWidget($nom,$onlyfirst). Par défaut ce paramètre vaut true ce qui indique à la méthode de ne retourner que le premier widget parent trouvé dont le ClassName correspond à $nom.

divorce de Pxxo_View et Zend_View

La classe Pxxo_View (classe permettant d'interpréter les templates) n'utilise plus du tout la classe Zend_View.

Propagation du thème de père en fils

Le paramètre de Thème descend maintenant dans la hiérarchie sauf si il est préciser localement. Cette propagation est la même que pour le paramètre Lang.

Bug fix

  • La surcharge des traductions via le tableau de paramètres ne fonctionnait pas. On peut maintenant les surcharger simplement. En voici un exemple :
    $params['TranslateData']['You nick is %s'] = 'Votre nickname (pseudonyme) est %s';

Divers

Réglage plus strict de la portée des méthodes.

fr/release/5.3.txt · Dernière modification: 2012/01/14 00:12 (édition externe)
 
 

©2003-2012 Pxxo

Partenaires : INIST-CNRS | Sourcesup | Web2.0 chat server | Jeux gratuits