8.9.3 Ancienen méthode de lecture des arguments (obsolète)
Note | API obsolète de lecture des paramètres
Cette API est obsolète est a été remplacée par la nouvelle API Zend.
|
Après avoir vérifié le nombre d'arguments, vous devez accéder aux arguments eux-mêmes.
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 des enveloppes
zval
,
qui doivent être déréférencés
deux fois
. Le code ci-dessus
essaie de lire un argument, et le rend disponible via le pointeur
parameter
.
zend_get_parameters_ex
accepte au moins deux
arguments. Le premier argument est le nombre d'arguments à lire
(qui doit correspondre au nombre d'arguments avec lequel la fonction
a été appelé. C'est pour cela qu'il est important de vérifier la
validité de la syntaxe d'appel). Le second argument (et tous les
suivants) sont des pointeurs de pointeurs de pointeurs sur des
zval
. (abscons, n'est ce pas?) Tous ces pointeurs sont
nécessaires car Zend fonctionne en interne avec des
**zval
; pour traiter une valeur locale
**zval
dans
notre fonction,
zend_get_parameters_ex
requiert un
pointeur.
La valeur retournée par
zend_get_parameters_ex
peut être
SUCCESS
ou
FAILURE
,
qui indiquent (sans surprise) la réussite ou l'échec du traitement
des arguments. Un échec est probablement relié à un mauvais nombre
d'arguments, et dans ce cas, il est recommandé de terminer le script
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 essayer de lire trop de paramètres. Si la fonction est
appelée avec 5 arguments, mais que vous n'en lisez que trois d'entre
eux avec
zend_get_parameters_ex
, vous ne générerez
pas une erreur, mais nous n'obtiendrez que les trois premiers paramètres.
Les appels ultérieurs à
zend_get_parameters_ex
ne liront pas les arguments suivants, mais les mêmes arguments.
|