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.