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.