====== Le 6 juin, Pxxo 3.6 ======
===== Ajout de la notion de ressources =====
Chaque objet Pxxo se veut indépendant et même extérieur à l'application qui l'utilise. Or, il se trouve qu'un objet Pxxo utilise généralement des fichiers annexes comme des images, des feuilles de styles, des scripts javascipts.
Pour que l'objet soit totalement indépendant, ses ressources doivent l'être également. Cette version de Pxxo gère cela à l'aide de 3 méthodes :
* putResource : Permet d'ajouter des ressources à l'objet courant
* setResourcePath : Permet de définir le chemin (physique) vers un répertoire qui publique.
* setResourceURL : Permet de définir le chemin (url) correspondant au répertoire défini par setResourcePath.
__Exemple :__
class exemple extends Pxxo_Action
{
function exemple()
{
$this->Pxxo_Action();
$this->ThemePaths = dirname(__FILE__) .DIRECTORY_SEPARATOR. $this->varnamemode;
// Généralement ces 2 méthodes sont appelées par l'objet racine
// le chemin web
$this->setResourceURL('./resources');
// le chemin physique correspond au chemin web
$this->setResourcePath(dirname(__FILE__) .DIRECTORY_SEPARATOR. 'resources');
}
function defaut()
{
$this->setTemplate('defaut', 'defaut.php.html');
$this->putResource('css', 'RSC1', 'style.css');
$this->putResource('js', 'RSC2', 'script.js');
$this->putResource('png', 'RSC3', 'image.png');
$this->putResource('png/php', 'RSC3', array($this->getThemeFile('image.png.php')));
$obj = new objet_pxxo_qui_produit_du_javascript()
$this->putResource('js/pago', 'RSC2', array(&$obj));
}
}
===== Ajout de la notion de thèmes =====
Précédemment les templates associés à chaque action devaient être stockés dans un répertoire particulier défini à l'aide de la méthode setTemplatePath.
La gestion de thème remplace avantageusement cette pratique.
Il suffit maintenant de définir les variables de classe **ThemePath** et **Theme**
| ThemePath | contient une série de répertoires pouvant contenir des fichiers attachés à un thème (des templates mais aussi des ressources) |
| Theme | contient le nom d'un répertoire présent dans ThemePath |
Lorsque Pxxo va chercher à accéder à un fichier template ou à une ressources, il va rechercher ce fichier dans les chemins définis dans ThemePath et il choisira le premier qu'il trouve.
__Exemple :__
// Avec les valeurs
$this->ThemePaths = '/themes:/alternative';
$this->Theme = 'blue';
/*
Pxxo recherchera dans les répertoires suivants :
/themes/blue/
/themes/defaut/
/themes/
/alternative/blue/
/alternative/defaut/
/alternative/
*/
===== Assouplissement du mode par défaut =====
Jusqu'à présent la méthode exécutée par defaut dans un objet Pxxo était la méthode **defaut**.
Maintenant on peut choisir la méthode que l'on veut à l'aide de **setDefaultMode**
__Exemple :__
class exemple extends Pxxo_Action
{
function exemple()
{
$this->Pxxo_Action();
$this->setDefaultMode('def');
$this->setTemplatePath(dirname(__FILE__));
}
function def()
{
$this->setTemplate('def', 'plan.html');
}
}
===== Un nouveau type de composant : Pxxo_Component_Stream =====
Permet d'ajouter simplement le contenu d'un fichier local ou distant.
__Exemple :__
$this->putComponent('Stream', 'TRUC', '/home/touv/truc.txt');
===== Hiérarchie entre objets =====
Il est désormais possible pour un objet Pxxo d'accéder à la référence de son objet parent.
__Exemple :__
class GrandPere extends Pxxo_Action
{
var $varnamemode = 'GrandPere';
(...)
function defaut() {
$this->putComponent(PCT_PAGO, 'LEPERE', new Pere);
}
}
class Pere extends Pxxo_Action
{
var $varnamemode = 'Pere';
(...)
function defaut() {
$this->putComponent(PCT_PAGO, 'ID1', new Fils);
}
}
class Fils extends Pxxo_Action
{
var $varnamemode = 'Fils';
(...)
function defaut() {
// Accès au Grand Père
$grand_pere = $this->Parent->Parent->varnamemode;
// Accés au Pére
$pere = $this->Parent->varnamemode
}
}