12.6.1 Créer une fonction PHP 3
12.6 Développement PHP
12 Annexes
Manuel PHP
. Prototypes de fonctions . Arguments de fonctions . Fonctions à nombre d'arguments variable . Utiliser les arguments d'une fonction . Gestion de la mémoire dans une fonction . Affecter une variable dans la table des symboles . Retourne une valeur simple . Retourner des valeurs complexes ->Utiliser la liste des ressources . Utiliser la table des ressources persistantes. . Ajouter des directives de configuration à l'exécution
|
12.6.1.9 Utiliser la liste des ressources
PHP 3.0 dispose de standards pour traiter un certains nombre de ressources.
Ils remplacent tous les listes de PHP 2.0.
Fonctions accessibles :
- php3_list_insert(ptr, type) - retourne l'identifiant 'id'
de la nouvelle ressource insérée.
- php3_list_delete(id) - efface la ressource
d'identifiant id
- php3_list_find(id,*type)
- retourne le pointeur de la ressource d'identifiant id,
et modifie le type 'type'
Typiquement, ces fonctions sont utilisées pour les pilotes SQL, mais elles peuvent
servir n'importe quoi d'autre. Par exemple, conserver un pointeur de fichier.
La liste standard de code ressemble à ceci :
Ajouter une nouvelle ressource |
RESOURCE *resource; /* ...alloue de la mémoire pour la ressource, et l'acquiert ... */ /* Ajoute la nouvelle ressource dans la liste */ return_value->value.lval = php3_list_insert((void *) resource, LE_RESOURCE_TYPE); return_value->type = IS_LONG;
|
Utiliser une ressource existante |
pval *resource_id; RESOURCE *resource; int type; convert_to_long(resource_id); resource = php3_list_find(resource_id->value.lval, &type); if (type != LE_RESOURCE_TYPE) { php3_error(E_WARNING,"resource index %d has the wrong type",resource_id->value.lval); RETURN_FALSE; } /* ...utiliser la ressource... */
|
Effacer une ressource existante |
pval *resource_id; RESOURCE *resource; int type; convert_to_long(resource_id); php3_list_delete(resource_id->value.lval);
|
Les types de ressources doivent être enregistré dans le fichier
php3_list.h, dans l'énumération list_entry_type. En plus, il
faut penser à ajouter une fonction de terminaison, pour chaque type
de ressource défini, dans le fichier list.c, pour la fonction
list_entry_destructor() (même si vous n'avez rien de particulier
à faire lors de la terminaison, vous devez au moins ajouter un cas vide.
|