7.10.3 L'ancienne technique de lecture des arguments (obsolète)
Note |
API de traitement des paramètres obsolète
Cette API est abandonnée et remplacée par la nouvelle API
du moteur Zend.
|
Après avoir vérifié le nombre d'arguments, vous devez accéder
par vous mêmes aux valeurs des arguments. Cela se fait avec
l'aide de la fonction zend_get_parameters_ex:
zval **parameter; if(zend_get_parameters_ex(1, ¶meter) != SUCCESS) WRONG_PARAM_COUNT;
Tous les arguments sont stockés dans une enveloppe zval,
qui doit être déréférencé deux fois. Le code
ci-dessus lit un argument et le rend accessible via le pointeur
parameter.
zend_get_parameters_ex accepte au moins deux
arguments. Le premier argument est le nombre d'argument à
lire (qui doit correspondre qui ont été utilisé lors de l'appel
de la fonction; c'est pour cela qu'il est important de vérifier
la syntaxe correcte). Le second argument (et tous ceux qui suivent)
sont des pointeurs de pointeurs de zval.
(c'est compliqué, n'est ce pas?) TOus ces pointeurs sont
nécessaires car Zend travaille en interne avec des
**zval; pour ajuster un **zval dans votre
fonction, zend_get_parameters_ex requiert un pointeur.
La valeur retournée par zend_get_parameters_ex
peut être soit SUCCESS, soit
FAILURE, ce qui indiquera (sans surprise) le
succès ou l'échec du traitement des arguments. Un échec est
probablement liés à un nombre incorrect d'argument spécifiés, auquel
cas vous devez terminer la fonction avec
WRONG_PARAM_COUNT.
Pour lire plus d'un argument, vous pouvez utiliser le code suivant :
zval **param1, **param2, **param3, **param4; if(zend_get_parameters_ex(4, ¶m1, ¶m2, ¶m3, ¶m4) != SUCCESS) WRONG_PARAM_COUNT;
zend_get_parameters_ex vérifie uniquement
si vous tentez le lire plus d'arguments qu'il n'y en a. Si la fonction
est appelée avec 5 paramètres, mais que vous n'en lisez que 3
avec zend_get_parameters_ex, vous n'aurez
pas de message d'erreur, mais vous lirez les trois premiers
paramètres uniquement. Les appels suivants à
zend_get_parameters_ex
ne permettront pas de lire les paramètres restants, mais
exactement les mêmes paramètres.
|