You might run into a situation in which you need write
access to a parameter that's retrieved with zend_get_parameters_ex() but not passed by
reference. For this case, you can use the macro SEPARATE_ZVAL, which does a zval separation on
the provided container. The newly generated zval is detached from internal data and has only
a local scope, meaning that it can be changed or destroyed
without implying global changes in the script context:
zval **parameter; /* retrieve parameter */ zend_get_parameters_ex(1, parameter); /* at this stage, parameter still is connected */ /* to Zend's internal data buffers */ /* make parameter write-safe */ SEPARATE_ZVAL(parameter); /* now we can safely modify parameter */ /* without implying global changes */ |
Note: As you can easily work around the lack of
write access in the "traditional" API (with zend_get_parameters() and so on), this API
seems to be obsolete, and is not discussed further in this
chapter.