Base de registre

De OviWiki
Aller à : navigation, rechercher


Structure de la base de registre

La base de registre est un moyen de mémoriser des informations librement dans un arbre sans créer de table et sans utiliser mysql. La facilité d'utilisation est mise en avant au détriment des performances.

disposition des répertoires à la racine :

le répertoire bab/ contient toutes les clefs liées au noyau

un répertoire par module peut être créé

API simplifiée

Récupération d'une valeur

Depuis ovidentia 8.6

Il est possible de récupérer une valeur de configuration par l'appel à la méthode :

bab_Registry::get($path, $defaultValue);

$path est une chaine contenant le chemin complet de la clé, par convention le premier niveau étant le nom de l'addon ayant défini cette clé. Par exemple '/myAddon/myValue'.

Il est possible de configurer les valeurs par défaut remontées par bab_Registry::get() en définissant des constantes de configuration. Le nom de la constante doit être la valeur path de la registry. Par exemple en ajoutant dans config.php la ligne suivante :

define('/myAddon/myValue', 1234);

et si aucune valeur n'a été enregistrée dans la registry, bab_Registry::get('/myAddon/myValue') renverra la valeur 1234.

Modification/définition temporaire d'une valeur via php

Depuis ovidentia 8.7

Un addon a la possibilité de modifier temporairement une valeur de configuration en utilisant la méthode :

bab_Registry::override($path, $value);

La valeur définie n'est enregistrée que pour la durée d'exécution du script php.

Forcer une valeur dans la configuration

Depuis ovidentia 8.7

Il est également possible de forcer des valeurs de la registry en définissant cette fois-ci une constante dont le nom sera le valeur path de la registry précédée d'un ! (point d'exclamation). Ainsi en ajoutant dans config.php la ligne suivante :

define('!/myAddon/myValue', 5678);

quelle que soit la valeur enregistrée dans la registry ou via la méthode bab_Registry::override, bab_Registry::get('/myAddon/myValue') renverra la valeur 5678.

Enregistrement d'une valeur

Depuis ovidentia 8.7

bab_Registry::set($path, $value);

Suppression d'une valeur

Depuis ovidentia 8.7

bab_Registry::delete($path);


API php

La fonction bab_getRegistryInstance est disponible dans tout ovidentia (fichier addonapi.php), elle permet d'obtenir l'instance de l'objet pour utiliser la base de registre.

exemple :

<source lang="php"> $instance = bab_getRegistryInstance(); </source>

$instance est un objet bab_registry


$instance->changeDirectory($dir)

Cette méthode permet de se déplacer dans l'arborescence de la base de registre, $dir est une chaîne de caractères.

Exemple : pour définir des valeurs de configuration dans un module, vous pouvez vous positionner dans un répertoire du nom du module et dans un sous-répertoire dédié à la configuration : $instance->changeDirectory('/monmodule/configuration');

$instance->setKeyValue($key, $value)

Méthode utilisée pour créer une clef et une valeur, $key est une chaîne, et $value peut être un objet, un tableau, une chaîne, un nombre entier ou un nombre flottant.

$key ne doit pas contenir de /

Remarque : la clé sera systématiquement créée dans le répertoire sélectionné auparavant (méthode changeDirectory()). Si le répertoire n'existe pas, la base de registre le créera.

$instance->removeKey($key)

Méthode pour supprimer une clef et sa valeur

$instance->getValue($key, $default_create = null)

Cette méthode permet d'obtenir une valeur enregistrée ou NULL si la clef n'existe pas, la valeur obtenue sera du même type que celle qui a été enregistrée.

Si le deuxième paramètre et renseigné et que la valeur n'existe pas, c'est le deuxième paramètre qui sera utilisé comme valeur. la méthode retournera cette valeur et la clef sera crée dans la base de registre avec cette valeur.

$instance->getValueEx($key)

Cette méthode retourne un tableau avec des informations complémentaires sur la clef.

Les clef suivantes pourront être utilisées :

  • value : la valeur de la clef
  • create_id_user : l'ID de l'utilisateur qui a crée la clef
  • update_id_user : l'ID du dernier utilisateur ayant modifié la valeur
  • createdate : date de création de la clef
  • lastupdate : date de la dernière modification de le clef

$instance->deleteDirectory()

Permet d'effacer le répertoire en cours.

$instance->fetchChildDir()

Permet de parcourir les répertoires enfants, la méthode retourne le répertoire suivant

$instance->fetchChildKey()

Permet de parcourir les clefs enfants, la méthode retourne la clef suivante

Module regedit

le module regedit est en cours de développement (il est présent dans le CVS ovidentia)