Extensions: parameters as references
| From: | Yasir Malik | Date: | Fri, 17 Jun 2005 15:51:24 +0000 |
| Subject: | Extensions: parameters as references | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-217138@lists.php.net to get a copy of this message | ||
I am creating a PHP extension. In my function, I want the parameter to be a reference. The extension function works fine only if the variable passed is initialized. For example, here is the extension function:
ZEND_FUNCTION(first_module)
{
zval *parameter;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
"z", ¶meter) == FAILURE)
return;
ZVAL_LONG(parameter, 78);
}
When I call this as
<?php
dl("test.so");
$a = 4;
first_module($a);
print "$a\n";
?>
it works fine, but when I call it as:
<?php
dl("test.so");
first_module($a);
print "$a\n";
?>
nothing is outputted. I looked at the source code for various extensions, and I noticed that they called the deconstructor zval_dtor(). I tried this, but it still did not work:
ZEND_FUNCTION(first_module)
{
zval *parameter;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
"z", ¶meter) == FAILURE)
return;
zval_dtor(parameter);
ZVAL_LONG(parameter, 78);
}
Thanks,
Yasir