8.9 Gestion des arguments
8 Développer PHP 4.0
Manuel PHP
. Déterminer le nombre d'arguments . Lire les arguments . Ancienen méthode de lecture des arguments (obsolète) . Traitement des nombres d'arguments variables et des paramètres optionnels . Accéder aux arguments . Traiter les arguments passés par référence ->Assurer les autres paramètres contre l'écriture
|
8.9.7 Assurer les autres paramètres contre l'écriture
Vous pouvez vous trouvez dans une situation où vuos devez avoir accès
à un paramètre qui a été lu par
zend_get_parameters_ex
mais pas passé par référence. Dans ce cas, vous pouvez utiliser
la macro
SEPARATE_ZVAL
, qui effectue une séparation zval sur
l'enveloppe fournie. La nouvelle enveloppe générée est détachée de sa
représentation interne, et n'est valide que localement, ce qui signifie qu'elle
peut être modifiée ou détruite dans implication au niveau global.
zval **parameter; /* Lit les paramètres */ zend_get_parameters_ex(1, ¶meter);
/* A ce moment, <parameter> est toujours connecté */ /* aux buffers internes de Zend */
/* Rend <parameter> accessible en écriture */ SEPARATE_ZVAL(parameter);
/* Maintenant, nous pouvons modifier sans problème <parameter> */ /* sans faire de modifications globales */
SEPARATE_ZVAL
utilise
emalloc
pour allouer une nouvelle enveloppe
zval
, ce qui signifie
que même si vous ne désallouer par la mémoire vous-même, elle sera
nettoyé dynamiquement lors de la terminaison du script. Cependant,
appeler souvent cette macro sans libérer votre RAM va fragmenter
votre mémoire vive.
Note:
vous pouvez contourner facilement le
manque d'accès dans la l'API traditionnelle (avec la fonction
zend_get_parameters
, etc...), mais cette
API est obsolète et n'est pas détaillée dans ce chapitre.
|