extension can not receive unset values without E_NOTICE or reference creation
| From: | D. Dante Lorenso | Date: | Fri, 26 May 2006 20:45:19 +0000 |
| Subject: | extension can not receive unset values without E_NOTICE or reference creation | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-23700@lists.php.net to get a copy of this message | ||
All,
Back on the topic of trying to write a 'filled' function in an extension, I have run into trouble. I have declared a function as follows:
---------- 8< -------------------- 8< ----------
static
ZEND_BEGIN_ARG_INFO(all_args_prefer_ref, ZEND_SEND_PREFER_REF)
ZEND_END_ARG_INFO()
zend_function_entry shorthand_functions[] = {
PHP_FE(filled, all_args_prefer_ref)
{NULL, NULL, NULL} /* Must be the last line in shorthand_functions[] */
};
PHP_FUNCTION(filled)
{
RETURN_TRUE;
}
---------- 8< -------------------- 8< ----------
Then, in PHP I try the following test code:
---------- 8< -------------------- 8< ----------
<?php
$x = array();
$x["dog"] = "spot";
$x["cat"] = "moriss";
print_r($x);
// testing
print filled("testing", $x["pig"], $y->testing);
print "\n";
print_r($x);
print_r($y);
?>
---------- 8< -------------------- 8< ----------
Unfortunately, $x now contains a 'pig' key and the non-existent $y has been transformed into an object:
---------- 8< -------------------- 8< ----------
Array
(
[dog] => spot
[cat] => moriss
)
1
Array
(
[dog] => spot
[cat] => moriss
[pig] => )
stdClass Object
(
[testing] => )
---------- 8< -------------------- 8< ----------
Is there a way to define the parameters which an extension's function will accept to be optionally set? The prefer-by-ref I am using is making the var exist even when I don't want it to.
Dante