registry
Les fonctions registry_get
, registry_set
et registry_delete
implémentent un registre permanent de sauvegarde de variables et de leurs valeurs.
Les variables sont enregistrées dans la table registry
de la BD.
`name` VARCHAR(100) NOT NULL,
`value` longtext NOT NULL,
PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Les valeurs des variables sont sérialisées.
registry_get
SYNOPSIS
registry_get($name, $default=false)
DESCRIPTION
registry_get
retourne la valeur de la variable précédemment enregistrée avec le nom $name
.
Si $name
n'est pas une variable enregistrée, ou en cas d'erreur, registry_get
retourne la valeur spécifiée par $default
.
CODE
- function registry_get($name, $default=false) {
- $sqlname=db_sql_arg($name, false);
- $tabregistry=db_prefix_table('registry');
- $sql="SELECT value FROM $tabregistry WHERE name=$sqlname";
- $r = db_query($sql);
- return $r ? unserialize($r[0]['value']) : $default;
- }
registry_get
exécute une requête SQL qui extrait la valeur de la variable $name
de la table registry
, puis désérialise la valeur obtenue avant de la retourner.
Notez l'emploi des fonctions db_sql_arg
et db_prefix_table
.
Si la variable $name
n'existe pas, ou en cas d'erreur, registry_get
retourne la valeur donnée par $default
qui vaut false
par défaut.
registry_set
SYNOPSIS
registry_set($name, $value)
DESCRIPTION
registry_set
enregistre la variable $name
avec la valeur $value
.
Si $name
est déjà enregistrée, sa valeur est remplacée.
registry_set
retourne true
, ou false
en cas d'erreur.
CODE
- function registry_set($name, $value) {
- $sqlname=db_sql_arg($name, false);
- $sqlvalue=db_sql_arg(serialize($value), true);
- $tabregistry=db_prefix_table('registry');
- $sql="INSERT INTO $tabregistry (name, value) SELECT * FROM (SELECT $sqlname AS name, $sqlvalue AS value) s WHERE NOT EXISTS (SELECT name FROM $tabregistry WHERE name=$sqlname)";
- $r = db_insert($sql);
- if ($r) {
- return true;
- }
- $sql="UPDATE $tabregistry SET name=$sqlname, value=$sqlvalue WHERE name=$sqlname";
- $r = db_update($sql);
- if ($r === false) {
- return false;
- }
- return true;
- }
registry_set
exécute une requête SQL qui ajoute la variable $name
avec la valeur sérialisée de $value
dans la table registry
.
Si $name
est déjà enregistrée dans la table, la requête SQL effectue une mise à jour de sa valeur.
registry_delete
SYNOPSIS
registry_delete($name)
DESCRIPTION
registry_delete
supprime la variable précédemment enregistrée avec le nom $name
.
registry_delete
retourne true
, ou false
en cas d'erreur.
CODE
- function registry_delete($name) {
- $sqlname=db_sql_arg($name, false);
- $tabregistry=db_prefix_table('registry');
- $sql="DELETE FROM $tabregistry WHERE name=$sqlname";
- $r = db_delete($sql);
- if ($r === false) {
- return false;
- }
- return true;
- }
registry_delete
exécute une requête SQL qui détruit la variable $name
dans la table registry
.
Commentaires