Utilisation d'une variable VAR / émulation GetArg

On va repartir de notre code modifié "Horloge" pour le rendre non pas utilisable avec des XPaths différents, mais avec le même XPath, le choix Horloge ou Heure se faisant cette fois ci avec une Variable !
Ceci suppose que vous avez déjà intégré les mini-didacticiels précédents.

Principe

Il s'agit maintenant, non pas de générer un XML 'universel' qui comporte les deux données, mais de générer un XML simple, qui comporte la donnée voulue en fonction de la valeur d'une variable indiquée dans la configuration de notre périphérique, le XPath restant le même !

Rappel de notre code

$heure = date('G') . date('i');
$horloge = date('H') . ":" . date('i') . ":" . date('s');
echo "<time>\n";
echo "<heure>" . $heure . "</heure>\n";
echo "<horloge>" . $horloge . "</horloge>\n";
echo "</time>";

écriture en commentaire de ce que l'on veut faire

// récupérer la variable
$heure = date('G') . date('i');
$horloge = date('H') . ":" . date('i') . ":" . date('s');
echo "<time>\n";
// si la variable concerne l'affichage "hmm", alors
echo "<heure>" . $heure . "</heure>\n";
// si la variable concerne l'affichage "hh:mm:ss", alors
echo "<heure>" . $horloge . "</heure>\n";
echo "</time>";
On remarquera que le tag est le même dans les deux cas, puisqu'on ne veut pas à avoir à changer le XPath, //heure mais la donnée affichée sera différente.
On va avoir deux nouvelles choses à faire
  1. Récupérer la variable
  2. Utiliser un conditionnel

Appel de la variable

La première des choses étant de récupérer la variable, il va falloir lui donner un nom, ceci se fait dans l'appel de notre script, en indiquant laquelle des trois est concernée (VAR1 VAR2 ou VAR3), ici VAR1 par exemple, et cette variable qui ne comporte pas de $, puisque ce n'est pas une variable du code PHP, sera récupérée dans une variable, elle, faisant parti du code, et qui sera logiquement de même nom, mais comportant le $ qu'implique la syntaxe. Appellons la par exemple format_heure et donc $format_heure dans le code. Cela se fait en indiquant la viariable dans l'URL qui appelle le script :
esperluette & + le nom de la variable + =[VARx]
http://localhost/script/?exec=heure.php&format_heure=[VAR1]
le XPath restant, puisque c'est le but, inchangé :
//heure
Nous en avons fini avec la configuration du périphérique

Récupérer la variable

Il va y avoir un hic, c'est que la fonction nécessaire, GetArg, est une fonction propre à Eedomus, qu'à cela ne tienne tout est prévu et nous allons utiliser une fonction d'émulation, à mettre en tête dans la fenêtre du Bac à Sable (et pas dans le script évidemment !), nous allons la rechercher ICI et comme nous n'avons besoin que d'une variable, il suffira de supprimer ce dont nous n'avons pas besoin, puis de compléter avec le nom de la variable et une valeur, dont nous n'avons pas encore parlé, je propose pour chaque présentation de l'heure, nous employons les valeurs "hmm" ou "hh:mm:ss" qui nous servirons dans le script pour réaliser notre conditionnel. Cela nous donne (par exemple pour hh:mm:ss)
function getArg($var) {
if ($var=="format_heure") { $return = "hh:mm:ss";}
return $return;
}
On rajoute une ligne de commentaire pour bien montrer ou commence le script
// ===================Votre Script dessous ===================
On n'oublie pas ? un code PHP commence toujours par...
<?php
Si on rajoute notre "script de travail" dessous, avec la fermeture du tag php, on obtient alors notre base de travail :
<?php
function getArg($var) {
if ($var=="format_heure") { $return = "hh:mm:ss";}
return $return;
}

// ===================Votre Script dessous ===================
// récupérer la variable
$heure = date('G') . date('i');
$horloge = date('H') . ":" . date('i') . ":" . date('s');
echo "<time>\n";
// si la variable concerne l'affichage "hmm", alors
echo "<heure>" . $heure . "</heure>\n";
// si la variable concerne l'affichage "hh:mm:ss", alors
echo "<heure>" . $horloge . "</heure>\n";
echo "</time>";

?>
On va pouvoir développer notre script, sans perdre de vue qu'il ne s'agit que de ce qui se trouve sous la barre ! Quand vous aurez fini de développer votre script, une solution rationnelle qui permet de ne pas se tromper, est de recopier tout le code dans un fichier php et de supprimer tout ce qui se trouve après le tage de début <?php jusqu'à la ligne // ==== Votre Script dessous ====

// récupérer la variable

Nous connaissons la fonction : GetArg, le nom de la variable : format_heure et la variable du code associée $format_heure. Soit :
$format_heure= getArg('format_heure');

// si la variable concerne l'affichage "hmm", alors

La nous avons plusieurs choix ! soient : Vous avez les liens des documentations des instructions ici

Nous utiliseront le 3ème choix : if/else, parce qu'il n'existe que 2 choix, et que pour éviter les erreurs d'entrée de l'utilisateur, tout autre choix que hh:mm:ss donnera le choix hmm (d'origine), y compris, donc, si VAR n'est pas renseigné ! Cela nous donne l'instruction de type :
if (expression) {alors}else{sinon}
on n'oublie pas la syntaxe php des instructions (point virgule), qui ne concerne pas l'instruction if elle-même ! cela nous donne :

if ($format_heure == "hh:mm:ss)
{
echo "<heure>" . $horloge . "</heure>\n";
}else
{
echo "<heure>" . $heure . "</heure>\n";
}
Notez le == pour vérifier l'égalité, voir ici

mais mais... mais c'est terminé ! nous pouvons donc insérer ce code à la place des commentaires et les 2 lignes d'instructions concernées.

Optimisation du Code

On peut faire mieux pour raccourcir le code, il suffit en fait de ne changer que l'appel de la variable, les textes et retour ligne étant les mêmes, il suffit de les inclure dans les echo qui encadrent notre if/else on donne ici le code complet pour le Bac à Sable :
<?php
function getArg($var) {
if ($var=="format_heure") { $return = "hh:mm:ss";}
return $return;
}

// ===================Votre Script dessous ===================
$format_heure= getArg('format_heure');
$heure = date('G') . date('i');
$horloge = date('H') . ":" . date('i') . ":" . date('s');
echo "<time>\n<heure>";
if ($format_heure == "hh:mm:ss") {echo $horloge;}else{echo $heure;}
echo "</heure>\n</time>";

?>

Modification du Json

Une fois testé, avec dans la fonction d'émulation les 2 valeurs de la variables (hh:mm:ss ou n'importe quoi qui donnera la prsentation par défaut hmm), il peut être interressant de savoir ce qu'on va changer dans le JSon du plugin horloge modifié ! ici c'est assez simple, on va déjà
"parameters": {
"VAR1" : "hh:mm:ss",
"value_type": "string",