Services webmasters
Partenaires
Jeux concours gratuits
 
Traiter les arguments passés par référence
<<<
Assurer les autres paramètres contre l'écriture Développer PHP 4.0
>>>

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, &parameter);

/* 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.

<< Assurer les autres paramètres contre l'écriture >>
Traiter les arguments passés par référence Gestion des arguments Développer PHP 4.0
Services webmasters
Les manuels
 
CoursPHP.com - Reproduction interdite -