Table des matières

Méthodes d'un widget

Surcharger une classe permet d'accéder aux méthodes des classes parents. La classe Pxxo_Widget fournit les méthodes suivantes :

Accès aux répertoires de thème

getThemeFile

Utilité : .....

Prototype : string getThemeFile(string $filename)

Recherche le fichier $filename dans l'ensemble des répertoires des ressources, et retourne son URL publique. Cette méthode retournera en priorité le fichier correspondant au thème courant.

Paramètres :

Exemples :

$url_de_fond = $this->getThemeFile('fond .png');
$url_de_logo = $this->getThemeFile('/design/logo.png');

addThemePath

Utilité : .....

Prototype : boolean addThemePath(string $path, boolean $flag)

Ajoute le chemin $path à la liste des chemins de thèmes.

Pour l'ajouter au début de liste, on positionnera $flag à true. On retournera true si le chemin a été ajouté, false sinon.

Paramètres :

Exemples :

$this->addThemePath('/www/images');
$this->addThemePath('/design/blue', true);

setTemplate

Utilité : .....

Prototype : void setTemplate(string $mode, string $nomfichier)

Associe un fichier de template à un mode donné

Paramètres :

Il est possible de ne pas utiliser setTemplate() si un fichier portant le nom du mode suffixé par '.php.html' existe dans les répertoires de Thèmes.

Exemples :

<?php 
class Exemple extends Pxxo_widgets {
    function __construct() {
        parent::Pxxo_Widgets(array(), __FILE__);
    }
    function index() {
        $this->setTemplate('index', 'template.php.html');
    }
    function monaction() {
         // utilisera le fichier monaction.php.html
    }
}
?>

Ajout de contenu

putWidget

Utilité : .....

Prototype : putWidget(string $id, Pxxo_Widget $child)

Méthode permettant d'ajouter un Widget en tant que fils.

Paramètres :

Exemples :

$this->putWidget('MON_WIDGET', new Pxxo_Widget_HelloWorld());
<?php echo $MON_WIDGET; ?>

putData

Depuis Pxxo 5.3 cette méthode est définitivement supprimée. Son équivalent est l'utilisation de $this->View.

Prototype : putData($id, $value)

Méthode permettant d'ajouter le contenu d'une variable PHP.

Paramètres :

Exemples :

$this->putData('ID1', '<b>super</b>'); 
$this->putData('ID2', array(1, 2, 3));

putStyle

Utilité : .....

Prototype : putStyle($filename, $media = 'screen')

Méthode permettant d'ajouter un fichier ressource CSS. Ce fichier sera interprété comme un fichier de template.

Paramètres :

Exemples :

$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');

putScript

Utilité : .....

Prototype : putScript($filename, $disposition = 'file')

Méthode permettant d'ajouter un fichier ressource Javascript. Ce fichier sera interprété comme un fichier de template.

Paramètres :

Exemples :

$this->putScript('script1.php.js');
$this->putScript('script2.php.js', 'inline');

putImage

Utilité : .....

Prototype : string putImage($filename, $id = null)

Méthode permettant d'ajouter une ressource image. Si l'identifiant n'est pas fourni, celui-ci sera automatiquement égal au nom (en majuscule) du fichier sans son suffixe

Paramètres :

Retourne : l'url de l'image.

Exemples :

$url_de_truc_png   = $this->putImage('truc.png'); // ===> $truc_png
$url_de_machin_png = $this->putImage('machin.png', 'BIDULE'); // ===> $BIDULE

putMedia

Utilité : .....

Prototype : putMedia($filename, $id = null)

Ajout d'une ressource média dynamique (calculé comme un template)

Paramètres :

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é.

Exemples :

$this->putMedia('image.php.png');  // ===> $IMAGE 
$this->putMedia('duflash.xml.php.swf');  // ===> $DUFLASH
$this->putMedia('truc.php.svg', 'DUSVG'); // ===> $DUSVG

putXSLT

Utilité : .....

Prototype : putXSLT($id, $xsl, $xml, $par = array(), $php = false, $engine = 'auto')

Méthode permettant d'ajouter une transformation XSL.

Paramètres : FIXME

Exemples :

$this->putXSLT('TRUC', 'fichier.xsl', 'fichier.xml');
 
$xml = '<xml/>';
$params = array('nom'=>'valeur');
$this->putXSLT('TRUC', 'fichier.xsl', $xml, $params, true);

putTitle

Utilité : .....

Prototype : Pxxo_Buffer_Header_Title putTitle(string $s)

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.

Paramétrage

setResourcePath

Utilité : .....

Prototype :void setResourcePath(string $chemin)

Fixe le chemin physique vers le répertoire $chemin contenant les ressources

setResourceURL

Utilité : .....

Prototype : void setResourceURL(string $url)

Fixe l'URL d'accès $url vers le chemin physique contenant les ressources

enableCache

Utilité : .....

Prototype : void enableCache()

Active le mécanisme de cache pour le widget et ses fils

disableCache

Utilité : .....

Prototype : void disableCache()

Désactive le mécanisme de cache pour le widget et ses fils

addCacheID

Utilité : .....

Prototype : addCacheID(…)

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']);
    }
}

setBenchmarkTimer

Utilité : .....

Prototype :void setBenchmarkTimer(object &$o)

Fixe un objet $o de type Timer, éventuellement utilisé par le widget pour calculer ses temps de traitements

setBenchmarkProfiler

Utilité : .....

Prototype : void setBenchmarkProfiler(object &$o)

Fixe un objet $o de type Profiler, éventuellement utilisé par le widget pour calculer ses temps de traitements

enableDebugMode

Utilité : .....

Prototype : void enableDebugMode()

Active l'affichage de trace permettant le debugage

disableDebugMode

Utilité : .....

Prototype : void disableDebugMode()

Désactive l'affichage de traces permettant le debugage

Gestion du mode

getMode

Utilité : .....

Prototype :string getMode()

Retourne le mode courant du widget, c'est-à-dire le nom de la méthode qui sera exécutée.

setMode

Utilité : .....

Prototype : void setMode(string $s)

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.

setDefaultMode

Utilité : .....

Prototype : void setDefaultMode(string $s)

Fixe avec $s le nom de la méthode qui sera exécutée par défaut. Si on n'utilise pas cette méthode c'est la méthode index qui sera exécutée.

getDefaultMode

Utilité : .....

Prototype : string getDefaultMode()

Retourne le nom de la méthode exécutée par défaut (ce sera index par défaut ;-))

switchMode

Utilité : .....

Prototype : mixed switchMode(string $s)

Change le mode courant par $s et exécute la méthode $s. Retourne le résultat de l'exécution de la méthode $s.

Remarque : pensez à faire un return après l'appel à switchMode si vous ne désirez pas que l'exécution du code continue sur l'ancien mode.

Variables POST/GET/SESSION

delSessionVar

Utilité : .....

Prototype : null delSessionVar(string $n)

Supprime la variable de session nommée $n

setSessionVar

Utilité : .....

Prototype : mixed setSessionVar(string $n, mixed $v)

Donne la valeur $v à la variable de session nommée $n

getSessionVar

Utilité : .....

Prototype : mixed getSessionVar(string $n, mixed $v = null)

Retourne la valeur de la variable de session nommée $n. Si cette variable n'existe pas, on renvoie $v

getInputVar

Utilité : .....

Prototype : mixed getInputVar(string $n, mixed $v = null)

Retourne la valeur de la variable nommée $n en provenance du navigateur (GET et POST). Si cette variable n'existe pas, on renvoie $v

setInputVar

Utilité : .....

Prototype : mixed setInputVar(string $n, mixed $v)

Donne la valeur $v à la variable nommée $n. On simule une variable en provenance du navigateur.

getPersistentVar

Utilité : .....

Prototype : mixed getPersistentVar(string $n, string $default)

Cette méthode retourne la valeur de la variable persistante $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.

delPersistentVar

Utilité : .....

Prototype : null delPersistentVar(string $n)

Supprime la variable persistante nommée $n. Cette méthode retourne la non-valeur null.

setPersistentVar

Utilité : .....

Prototype : string setPersistentVar(string $n, mixed $v)

Donne la valeur $v à la variable persistante nommée $n. Cette méthode retourne $v

excludeVars

Utilité : .....

Prototype : void excludeVars(mixed $p1, $pn …)

Les attributs de l'objet ayant pour nom $p1 à pn ne seront pas disponible dans le template associé. De ce fait ces variables ne seront plus sérialisées lors des calculs automatiques du cache de Pxxo. Ceci est très pratique lorsque l'on manipule des objets non sérialisables comme PDO en php5.

Contrôle et accès extérieur

connect

Utilité : .....

Prototype : boolean connect(string $event, pxxo_widget &$objet, string $mode, array $param = null)

Méthode permettant de “connecter” le mode de l'objet courant avec un autre objet. Deux cas possibles 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 et $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());

dumphead

Utilité : .....

Prototype : string dumphead()

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.

gethead

Utilité : .....

Prototype : mixed gethead($type = 'html')

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').

getParamsArray

Utilité : .....

Prototype : 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 fait ce qui a été passé en paramètre au constructeur ($params) à la différence que les valeurs des paramètres peuvent avoir été modifiées par l'exécution du widget suivant le moment où cette méthode est appelée.

Manipulation des décorateurs

getDecorated

Utilité : .....

Prototype : Pxxo_Widget getDecorated()

Cette méthode est utile lorsqu'elle est appelée depuis un widget 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.

findParentWidget

Utilité : .....

Prototype : mixed findParentWidget($classname, $onlyfirst = true)

Si $onlyfirst vaut true (par défaut), cette méthode retourne le premier widget parent dont le nom de la classe vaut $classname. Si $onlyfirst vaut false, cette méthode retourne la liste des widgets 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é. La profondeur 0 correspond au widget courant. Une profondeur de 5 signifie donc 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',false);
foreach($wid as $level => $w)
    echo 'level='.$level.' - widget='.$w->ClassID.'<br>';
 
$wid = $obj->findParentWidget('Pxxo_Widget_Decorator_Ajax');
echo $wid->ClassID.'<br>';

affichera

level=3 - widget=Pxxo_Widget_Decorator_Border
Pxxo_Widget_Decorator_Ajax