Surcharger une classe permet d'accéder aux méthodes des classes parents. La classe Pxxo_Widgets fournit les méthodes suivantes :
Recherche le fichier $filename dans l'ensemble des répertoires des ressources, et retourne son chemin d'accès complet. On retournera en priorité le fichier correspondant au thème courant.
$fullname = $this->getThemeFile('fond .png'); $fullname = $this->getThemeFile('/design/logo.png');
Ajoute le chemin $s à la liste des chemins de thèmes.
Pour l'ajouter au début de liste, on positionnera $b à true Méthode permettant d'ajouter un fichier Javascript. Ce fichier sera interprété comme un fichier de template. On retournera true si le chemin a été ajouté, false sinon.
$this->addThemePath('/www/images'); $this->addThemePath('/design/blue', true);
Associe un fichier de template à un mode donné
La fonction setTemplate ne doit pas obligatoirement être utilisée. Elle s'adapte en fonction du mode courant. On peut même ne pas du tout l'utiliser si un fichier portant le nom du mode courant est suffixé par '.php.html' existe dans les répertoires de Thèmes.
Exemple :
<?php class Exemple extends Pxxo_widgets { function __construct() { parent::Pxxo_Widgets(array(), __FILE__); } function defaut() { $this->setTemplate('template.php.html'); } function monaction() { // utilisera le fichier monaction.php.html } } ?>
Méthode permettant d'ajouter le contenu d'une variable PHP.
$this->putData('ID1', '<b>super</b>'); $this->putData('ID2', array(1, 2, 3));
Méthode permettant d'ajouter un fichier CSS. Ce fichier sera interprété comme un fichier de template.
$this->putStyle('style1.php.css'); $this->putStyle('style2.php.css', 'print');
Remarque :Style spécifique pour Internet Explorer
On peut maintenant attribuer des règles CSS différentes en fonction de la version d'internet explorer. Pour cela il suffit de donner la condtion dans le paramètre $media de la méthode putStyle.
$this->putStyle('fichier.css', 'if lte IE 6'); $this->putStyle('fichier.css', 'if IE 7'); $this->putStyle('fichier.css', 'if IE');
Méthode permettant d'ajouter un fichier Javascript. Ce fichier sera interprété comme un fichier de template.
$this->putScript('script1.php.js'); $this->putScript('script2.php.js', 'inline');
Méthode permettant d'ajouter une image. Si l'identifiant n'est pas fourni, celui-ci sera automatiquement égal au nom (en majuscule) du fichier sans son suffixe
Retourne l'url de l'image.
$url_de_truc_png = $this->putImage('truc.png'); // ===> $truc_png $url_de_machin_png = $this->putImage('machin.png', 'BIDULE'); // ===> $BIDULE
Ajout d'un média dynamique (calculé comme un template)
Un média est une ressource externe à la page et référencée dans celle-ci par une URL. Comme par exemple : un fichier svg, swf, png, etc …
Le suffixe du fichier est utilisé pour typer le contenu. Si l'identifiant n'est pas fourni, celui-ci sera automatiquement égal au nom (en majuscule) du fichier en s'arrêtant au premier point rencontré.
$this->putMedia('image.php.png'); // ===> $IMAGE $this->putMedia('duflash.xml.php.swf'); // ===> $DUFLASH $this->putMedia('truc.php.svg', 'DUSVG'); // ===> $DUSVG
Méthode permettant d'ajouter une transformation XSL.
$this->putXSLT('TRUC', 'fichier.xsl', fichier.xml'); $xml = '<xml/>'; $params = array('nom'=>'valeur'); $this->putXSLT('TRUC', 'fichier.xsl', $xml, $params, true);
Ajoute un titre dans la liste des titres possibles pour la page HTML produite. Remarque : le widget décorateur Core affiche automatiquement la concaténation des titres trouvés dans la hiérarchie des widgets.
Fixe le chemin physique vers le répertoire $chemin contenant les ressources
Fixe l'URL d'accès $url vers le chemin physique contenant les ressources
Active le mécanisme de cache pour le widget et ses fils
Désactive le mécanisme de cache pour le widget et ses fils
Tout les paramètres transmis à cette méthode serviront à calculer un identifiant discriminant pour la mise en route du cache. D'un appel sur l'autre, la valeur de ces variables permettra de savoir s'il s'agit d'un appel strictement identique (ne nécessitant pas une rééxécution) ou s'il s'agit d'un appel différent
Exemple :
class truc { function __construct($a, $b) { $this->addCacheID($a, $b, $GLOBALS['truc']); } }
Fixe un objet $o de type Timer, éventuellement utilisé par le widget pour calculer ses temps de traitements
Fixe un objet $o de type Profiler, éventuellement utilisé par le widget pour calculer ses temps de traitements
Active l'affichage de trace permettant le debugage
Désactive l'affichage de traces permettant le debugage
Retourne le mode courant du widget, c'est-à-dire le nom de la méthode qui sera exécutée.
Avec $s, on impose le mode courant du widget. Si setMode est appelée avant la méthode main ou avant la méthode putWidget, c'est la méthode $s qui sera exécutée.
Fixe avec $s le nom de la méthode qui sera exécutée par defaut. Si on n'utilise pas cette méthode c'est la méthode “defaut” qui sera exécutée.
Retourne le nom de la méthode exécutée par défaut
null delSessionVar(string $n)$nmixed setSessionVar(string $n, mixed $v)$v à la variable de session nommée $nmixed getSessionVar(string $n, mixed $v = null)$n. Si cette variable n'existe pas, on renvoie $vmixed getInputVar(string $n, mixed $v = null)$n en provenance du navigateur (GET et POST). Si cette variable n'existe pas, on renvoie $vmixed setInputVar(string $n, mixed $v)$v à la variable nommée $n. On simule une variable en provenance du navigateur.mixed getPersistentVar(string $n, string $default)$n. Une variable persistante est une variable en provenance du navigateur, que l'on garde en mémoire (en sessions) même si le navigateur ne la renvoie plus. $default est la valeur qui sera renvoyée si aucune variable n'est trouvée.null delPersistentVar(string $n)$n. Cette méthode retourne la non-valeur null.string setPersistentVar(string $n, mixed $v)$v à la variable persistante nommée $n. Cette méthode retourne $vMéthode permettant de “connecter” le mode de l'objet courant avec un autre objet. Deux cas possible en fonction de la présence ou non du paramètre $param.
Si $param vaut null et si l'objet courant est dans le mode $event, alors on positionne dans l'objet $objet le mode $mode.
Si $param est un tableau et si l'objet courant est dans le mode $event, alors on positionne dans l'objet $objet le mode $mode et on l'exécute. Dans ce cas chaque valeur du tableau sera passée en paramètre à la méthode $mode. Si en plus cette méthode est appelée après l'exécution du mode de l'objet courant, alors on ajoutera comme dernier paramètre à la méthode $mode, la valeur du retour de l'exécution de la méthode $event.
Cette méthode retourne TRUE, si la connexion a eu lieu.
Exemple :
// Soit 3 widgets $a, $b t $c // si $c est dans le mode `raz` // alors on passe l'objet $a en mode `defaut` $c->connect('raz', $a, 'defaut'); // si $a est dans le mode `action1` // alors on exécute la méthode saisir de l'objet $b // avec les paramétres 1 et 4 $a->connect('action1', $b, 'saisir', array(1,4)); // si $b est dans le mode `somme` // alors on exécute la méthode `change` de l'objet $c // avec comme paramétre la valeur de retour de la méthode `somme` $b->connect('somme', $c, 'change', array());
Affiche les lignes HTML nécessaires pour activer les feuilles de style et les fichiers Javascript. Ce sont des entêtes HTML : à placer dans la balise <head> de votre page.
Remarque : si vous utilisez le décorateur Core, les entêtes seront automatiquement placées dans la balise <head> de votre page.
Très analogue à dumphead. Cette méthode n'affiche rien, elle retourne soit la chaîne de caractère des entêtes HTML du widget ($type = 'html'), soit un tableau php décrivant les ressources du widget ($type = 'array').
array getParamsArray()Retourne la liste des paramètres du widget. Les clés sont les noms des paramètres et les valeurs sont les valeurs des paramètres. Cette méthode retourne en faite ce qui a été passé en paramètre au constructeur ($params) à la différence que les valeurs des paramètres peuvent avoir été modifié par l'exécution du widget suivant le moment où cette méthode est appelée.
Pxxo_Widget getDecorated() : cette méthode est utile lorsqu'elle est appelée depuis un décorateur, elle permet de retrouver l'instance du widget décoré. Dans le cas où elle est appelée depuis un widget classique, elle retourne null.array findParentWidget($classname) : cette méthode retourne la liste des widget parents dont le nom de la classe vaut $classname, le tableau retourné est indexé par un identifiant de profondeur. L'identifiant de profondeur permet de savoir combien de widgets sont intercalés entre le widget courant et le widget recherché. Une profondeur de 0 signifie que le widget recherché est le widget courant, une profondeur de 5 signifie qu'il y a 4 autres widgets dans la hiérarchie entre le widget courant et le widget recherché. Exemple :$obj = new Pxxo_Widget_HelloWorld(); $obj->addDecorator('Pxxo_Widget_Decorator_Ajax'); $obj->addDecorator('Pxxo_Widget_Decorator_Border'); $obj->addDecorator('Pxxo_Widget_Decorator_Core'); $obj->main(); $wid = $obj->findParentWidget('Pxxo_Widget_Decorator_Border'); foreach($wid as $level => $w) echo 'level='.$level.' - widget='.$w->ClassID.'<br>';
retourne
level=3 - widget=Pxxo_Widget_Decorator_Border