Close search
Hoa

Hack book de Hoa\Registry

Les registres statiques sont des tableaux contenant des informations de toutes sortes. La bibliothèque Hoa\Registry propose un registre statique et quelques facilités.

Table des matières

  1. Introduction
  2. Manipuler le registre
  3. Intégration au protocole hoa://
  4. Conclusion

Introduction

Un registre statique permet de stocker des informations de toutes sortes, appelées entrées. Un registre se comporte comme un tableau PHP avec des clés et des valeurs, c'est à dire comme un hashmap.

Manipuler le registre

La classe Hoa\Registry\Registry ne propose que quatre méthodes statiques :

L'utilisation est triviale. Nous allons prendre un exemple :

Hoa\Registry\Registry::set('foo', 'bar');
var_dump(Hoa\Registry\Registry::get('foo'));

/**
 * Will output:
 *     string(3) "bar"
 */

Les clés doivent être un booléen, un entier ou une chaîne de caractères. Il n'y a aucune restriction, pas de valeur ou de caractère interdit. Il est libre à l'utilisateur de définir ses propres conventions de nommage pour les clés. Nous pouvons par exemple utiliser . (point) ou / (slash) pour créer une sorte de structure linéarisée ; par exemple group.subgroup.entry. Peu importe, Hoa\Registry\Registry ne fera aucune différence.

Voyons les deux dernières méthodes à travers la suite de l'exemple :

var_dump(Hoa\Registry\Registry::isRegistered('foo'));
Hoa\Registry\Registry::remove('foo');
var_dump(Hoa\Registry\Registry::isRegistered('foo'));

/**
 * Will output:
 *     bool(true)
 *     bool(false)
 */

C'est aussi simple que ça. Le registre ne vit que durant une exécution. Il est accessible globalement depuis partout.

Intégration au protocole hoa://

Le protocole hoa:// permet d'abstraire des ressources de toutes sortes et la branche hoa://Library abstrait les ressources appartenant aux bibliothèques. La bibliothèque Hoa\Registry propose d'accéder aux valeurs des entrées à l'aide du chemin hoa://Library/Registry#keykey représente la clé de l'entrée. Le moyen le plus simple pour résoudre un tel chemin est d'utiliser la fonction resolve :

var_dump(resolve('hoa://Library/Registry#foo'));

/**
 * Will output:
 *     string(3) "bar"
 */

L'utilisation du protocole est très utile pour représenter une ressource stockée dans le registre à travers une URI. Comme nous pouvons y stocker toutes sortes de données, nous pouvons imaginer y stocker des flux ; par exemple :

// A dummy stream.
$stream = new Hoa\File\Read(__FILE__);
Hoa\Registry\Registry::set('stream.dummy', $stream);

Et autre part, dans notre application, grâce à des conventions de nommage, nous pouvons retrouver notre flux :

$stream = resolve('hoa://Library/Registry#stream.dummy');
echo $stream->readAll();

Nous pouvons y stocker aussi des fonctions anonymes ou tout autre chose. Les possibilités sont intéressantes.

Conclusion

La bibliothèque Hoa\Registry propose un registre statique. Son intégration au protocole hoa:// l'expose à de nouveaux usages. Son fonctionnement est assez trivial mais elle peut s'avérer utile régulièrement.

Une erreur ou une suggestion sur la documentation ? Les contributions sont ouvertes !

Comments

menu