Deprecated parameter parsing API: This API is deprecated and superseded by the new ZEND parameter parsing API.
After having checked the number of arguments, you need
to get access to the arguments themselves. This is done with
the help of
zend_get_parameters_ex():
zval **parameter; if(zend_get_parameters_ex(1, parameter) != SUCCESS) WRONG_PARAM_COUNT; |
zend_get_parameters_ex() accepts
at least two arguments. The first argument is the number of
arguments to retrieve (which should match the number of
arguments with which the function has been called; this is
why it's important to check for correct call syntax). The
second argument (and all following arguments) are pointers to
pointers to pointers to zvals.
(Confusing, isn't it?) All these pointers are required
because Zend works internally with
**zval; to adjust a local **zval
in our function,zend_get_parameters_ex() requires a pointer to
it.
The return value of
zend_get_parameters_ex() can either be SUCCESS or FAILURE,
indicating (unsurprisingly) success or failure of the
argument processing. A failure is most likely related to an
incorrect number of arguments being specified, in which case
you should exit with
WRONG_PARAM_COUNT.
To retrieve more than one argument, you can use a
similar snippet:
zval **param1, **param2, **param3, **param4; if(zend_get_parameters_ex(4, param1, param2, param3, param4) != SUCCESS) WRONG_PARAM_COUNT; |
zend_get_parameters_ex() only
checks whether you're trying to retrieve too many parameters.
If the function is called with five arguments, but you're
only retrieving three of them with
zend_get_parameters_ex(), you won't get an error but will
get the first three parameters instead. Subsequent calls of
zend_get_parameters_ex() won't
retrieve the remaining arguments, but will get the same
arguments again.