Clearbricks
Parcourir la série : premier - précédent
Clearbricks : la classe staticRecord et sa fonction newFromArray()
J'ai découvert récemment (dans le plugin Metadata) une nouvelle fonction extrêmement pratique. Cette fonction, elle s'appelle newFromArray()
et elle appartient à la classe staticRecord
.
Comme son nom l'indique, la fonction reçoit un tableau (array
en anglais) newFromArray()
et le transforme en quelque chose de nouveau, ici c'est un objet staticRecord
. L'interêt de cet objet, c'est qu'il est compatible avec les fonctions que j'ai déjà décrites (je vais reprendre ce même exemple).
Un tableau
Créons un tableau tout simple :
$array = array(); $array[] = array('nom' => 'Pierre', 'role' => 'clown'); $array[] = array('nom' => 'Paul', 'role' => 'développeur'); $array[] = array('nom' => 'Jacques', 'role' => 'soutien moral');
Rappel sur la commande foreach()
Classiquement, on parcourt un tableau avec la commande foreach :
foreach ($array as $k => $v) { echo($v['nom'].' : '.$v['role'].'<br />'); }
Voici le résultat de l'exécution de ces 2 codes l'un après l'autre :
Pierre : clown Paul : développeur Jacques : soutien moral
Utilisation de newFromArray()
Utilisons la fonction staticRecord::newFromArray()
:
$sr = staticRecord::newFromArray($array);
On peut alors parcourir $sr
comme on parcourait les recordsets issus de la fonction select()
:
while ($sr->fetch()) { echo($sr->nom.' : '.$sr->role.'<br />'); }
Ceci affiche le même résultat qu'avec la fonction foreach()
, mais avec un code plus simple.
Conclusion
Grâce à cette commande, on peut utiliser la même syntaxe pour les recordsets et pour les tableaux transformés avec staticRecord::newFromArray()
. L'intérêt n'est peut-être pas flagrant avec cet exemple mais l'intérêt augmente avec la quantité de données. Dans les fonctions de template de Dotclear 2, ça permet aussi de pouvoir utiliser <LoopPosition>
.
Pour les connaisseurs de Dotclear et de ses templates, voici un exemple d'utilisation : une balise tpl, la fonction associée (observez aussi la fonction suivante) et la fonction qu'elle appelle.