Why does the following result in the object $test->elements['one'] being
wiped out? Although, I could possibly understand it remaining in it's
original state if get_element() is actually returning a copy and not a
reference to the object, I just don't understand why the object is
destroyed. Seems like a possible bug in references / garbage collection.
Tested with PHP 4.0.6 on linux.
<?php
class app
{
var $elements = array();
function add_element($name)
{
$this->elements[$name] = new element();
}
function &get_element($name)
{
//$ref = &$this->elements[$name]; // uncomment and it
works as expected
return( $this->elements[$name] );
}
}
class element
{
var $values = array();
function add_values($value)
{
if (is_array($value))
{
foreach ($value as $one)
{
$this->add_values($one);
}
}
else
{
$this->values[] = $value;
}
}
}
echo "<pre>\n";
$test = new app;
$test->add_element('one');
echo "\ntest:\n";
print_r($test);
$el = &$test->get_element('one');
$el->add_values( array('v1', 'v2', 'v3') );
echo "\ntest:\n";
print_r($test);
echo "\nel:\n";
print_r($el);
echo "\n</pre>";
/*
output
==========
test:
app Object
(
[elements] => Array
(
[one] => element Object
(
[values] => Array
(
)
)
)
)
test:
app Object
(
[elements] => Array
(
[one] =>
)
)
el:
element Object
(
[values] => Array
(
[0] => v1
[1] => v2
[2] => v3
)
)
*/
?>
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]