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_".
La classe Pxxo_Config est supprimée !
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';
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');
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);
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);
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.
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 :
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.
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é.
$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(); } }
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.
La classe Pxxo_View (classe permettant d'interpréter les templates) n'utilise plus du tout la classe Zend_View.
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.
$params['TranslateData']['You nick is %s'] = 'Votre nickname (pseudonyme) est %s';
Réglage plus strict de la portée des méthodes.