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 :
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)); } }
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/ */
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'); } }
Permet d'ajouter simplement le contenu d'un fichier local ou distant.
Exemple :
$this->putComponent('Stream', 'TRUC', '/home/touv/truc.txt');
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 } }