SommaireTelecharger la documentationChapitre suivantChapitre precedent  

  .: News :.: Edito :.: Scripts :.: Forum :.: Erreurs :.: Jobs :. 
 
Sommaire

Gestion des arguments

Compter le nombre d'arguments
Lecture des arguments
L'ancienne technique de lecture des arguments (obsolète)
Cas des nombres variables de paramètres et des arguments optionnels
Accéder aux arguments
Cas des arguments passés par référence
Assurer la protection en écriture des autres paramètres

7.10.7 Assurer la protection en écriture des autres paramètres

Vous pouvez être dans une situation où vous aurez besoin d'accès en écriture à un paramètre qui n'a pas étét lu avec la fonction zend_get_parameters_ex, mais qui est passé par référence. Dans ce cas, vous pouvez utiliser la macro SEPARATE_ZVAL, qui effectue une séparation de zval avec l'enveloppe passée en argument. La nouvelle valeur zval générée est détachée des données internes, et a un espace de validité limité à la fonction, ce qui signifie qu'elle peut être modifiée ou détruite sans avoir de conséquence au niveau global.


zval **parameter;
     
/* lire le paramètre */
zend_get_parameters_ex(1, ¶meter);
/* a ce niveau, <parameter> est toujours connecté */
/* aux données internes de Zend */
/* rend <parameter> accessible en écriture */
SEPARATE_ZVAL(parameter);
/* désormais, nous pouvons modifier <parameter> en toute sécurité */
/* sans impliquer de moifications globales */
SEPARATE_ZVAL utilise emalloc pour allouer de nouvelles enveloppe zval, ce qui signifie que même si vous ne désallouer pas la mémoire elle-même, elle sera automatiquement détruite à la fin du script. Toutes fois, faire de nombreux appels à cette macro sans libérer les résultats intermédiaire risque de consommer toute votre mémoire.

Note:  comme vous pouvez facilement contourner ce problème avec les API traditionnelles (avec zend_get_parameters etc...), cette API est obsolète, et ne sera pas discuté ultérieurement.


Chapitre précédentChapitre suivantAccueil nexen.net