Gestion de la mémoire dans une fonction <<< |
Affecter une variable dans la table des symboles | Retourne une valeur simple >>> |
11.5.1 Créer une fonction PHP 3 11.5 Développement PHP 11 Appendices 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 |
11.5.1.6 Affecter une variable dans la table des symboles
Un grand nombre de macros sont disponibles pour rendre plus facile l'insertion de variables dans la table des symboles :
Soyez prudent avec la constante SET_VAR_STRING. La valeur doit être placée dans une portion de mémoire créée avec malloc(), sinon le gestionnaire de mémoire essayera de libérer le pointeur plus tard. Ne passez aucune mémoire allouée statiquement à SET_VAR_STRING. Les tables des symboles de PHP est une table de hash. A n'importe quel moment, &symbol_table est un pointeur sur la table principale, et active_symbol_table pointe sur la table actuellement utilisée. (ces deux tables peuvent être identiques au démarrage, ou différent, suivant que vous êtes dans une fonction ou non). Les exemples suivants utilisent 'active_symbol_table'. Vous devriez la remplacer par &symbol_table si vous voulez travailler sur la table principale. De plus, les mêmes fonctions peuvent être appliquées à des tableaux, comme expliqué ci-dessous.
Si vous voulez définir un nouveau tableau dans la table des symboles, utilisez le code suivant. D'abord, vous devez vérifier qu'il n'existe pas, avec hash_exists() ou hash_find(). Puis, initialisez le tableau :
Voici comment ajouter deux nouvelles entrées dans ce tableau :
hash_next_index_insert() utiliser plus ou moins la même logique que "$foo[] = bar;" in PHP 2.0. Si vous construisez un tableau, pour le retourner, vous pouvez l'initialiser comme ceci :
puis ajouter les valeurs grâces aux macros:
Bien sûr, si l'ajout n'est pas fait juste après l'initialisation, vous devrez d'abord rechercher le tableau :
Notez que hash_find reçoit un pointeur sur un pointeur sur pval, et pas un pointeur sur pval. Toutes les fonctions d'accès aux hash retourne TRUE (SUCCES) ou FALSE (FAILURE), excepté hash_exists(), qui retourne un booléen. |
<< | Affecter une variable dans la table des symboles | >> |
Gestion de la mémoire dans une fonction | Créer une fonction PHP 3 | Retourne une valeur simple |