Base de registre : Différence entre versions
(→Récupération d'une valeur) |
|||
| (15 révisions intermédiaires par 4 utilisateurs non affichées) | |||
| Ligne 1 : | Ligne 1 : | ||
| + | [[Catégorie:Développement de modules]] | ||
| + | [[Catégorie:API Ovidentia]] | ||
| + | |||
== Structure de la base de registre == | == 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 : | disposition des répertoires à la racine : | ||
| − | le répertoire bab/ | + | le répertoire bab/ contient toutes les clefs liées au noyau |
un répertoire par module peut être créé | 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 == | == 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 | + | La fonction <code>bab_getRegistryInstance</code> est disponible dans tout ovidentia (fichier addonapi.php), elle permet d'obtenir l'instance de l'objet pour utiliser la base de registre. |
exemple : | exemple : | ||
| − | < | + | <source lang="php"> |
$instance = bab_getRegistryInstance(); | $instance = bab_getRegistryInstance(); | ||
| − | </ | + | </source> |
| − | $instance est un objet bab_registry | + | $instance est un objet <code>bab_registry</code> |
| Ligne 24 : | Ligne 76 : | ||
=== $instance->changeDirectory($dir) === | === $instance->changeDirectory($dir) === | ||
| − | Cette méthode permet de | + | Cette méthode permet de se déplacer dans l'arborescence de la base de registre, <code>$dir</code> 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) === | === $instance->setKeyValue($key, $value) === | ||
| − | Méthode utilisée pour créer une clef et une valeur, $key est une | + | Méthode utilisée pour créer une clef et une valeur, <code>$key</code> est une chaîne, et $value peut être un objet, un tableau, une chaîne, un nombre entier ou un nombre flottant. |
| + | |||
| + | <code>$key</code> 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) === | === $instance->removeKey($key) === | ||
| − | Méthode pour supprimer une clef | + | Méthode pour supprimer une clef et sa valeur |
| − | === $instance->getValue($key) === | + | === $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 | + | Cette méthode permet d'obtenir une valeur enregistrée ou <code>NULL</code> 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) === | === $instance->getValueEx($key) === | ||
| − | Cette méthode retourne un tableau avec des | + | Cette méthode retourne un tableau avec des informations complémentaires sur la clef. |
| + | |||
| + | Les clef suivantes pourront être utilisées : | ||
| + | |||
| + | * <code>value</code> : la valeur de la clef | ||
| + | * <code>create_id_user</code> : l'ID de l'utilisateur qui a crée la clef | ||
| + | * <code>update_id_user</code> : l'ID du dernier utilisateur ayant modifié la valeur | ||
| + | * <code>createdate</code> : date de création de la clef | ||
| + | * <code>lastupdate</code> : date de la dernière modification de le clef | ||
=== $instance->deleteDirectory() === | === $instance->deleteDirectory() === | ||
Permet d'effacer le répertoire en cours. | 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 == | == Module regedit == | ||
| − | le module regedit est en cours de développement (il | + | le module regedit est en cours de développement (il est présent dans le CVS ovidentia) |
Version actuelle en date du 27 août 2018 à 09:37
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)