reference parameters for overloaded objects
| From: | Wez Furlong | Date: | Sat, 12 Oct 2002 01:54:45 +0000 |
| Subject: | reference parameters for overloaded objects | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-89375@lists.php.net to get a copy of this message | ||
I've got some code that wraps objects from an external library.
The "glue code" sets a flag when a reference parameter is set by
a function; the code in my (ZE1) call handler looks something like this:
if (args[i].isref) {
if (!PZVAL_IS_REF(arguments[i])) {
php_error(E_WARNING, "%s(): parameter %d was not passed by reference!",
Z_STRVAL(function_name->element), i);
}
SEPARATE_ZVAL_IF_NOT_REF(&arguments[i]);
fill_zval_from_arg(arguments[i], &args[i] TSRMLS_CC);
arguments[i]->is_ref = 1;
arguments[i]->refcount = 2;
}
arguments is a zval ** populated using zend_get_parameters_array().
args a zval-alike used to talk to the library.
Now, if I call my overloaded object like this:
$obj->foo(&set_me_please);
$set_me_please correctly picks up the value set by the foo function.
If I call it like this:
$obj->foo($set_me_please);
Then I get a warning about the parameter not being passed by reference
and $set_me_please ends up (or remains) NULL.
Is there any way for the latter case to set $set_me_please, without
explicitly using the &?
--Wez.
--
Wez Furlong
The Brain Room Ltd.