We've been having lots of problems with references (especially storing references to objects in arrays). We beleive we've narrowed a big part of our problems down to the following example.
<?php
// What's the difference between this...
function foo(&$b) {
global $c;
$c = &$b; // I don't want a COPY of the variable I want a REFERENCE
}
$a = "Start";
foo($a);
$c = "End";
echo $a; // Shouldn't this echo "End" not start?
// ... and this ...
$a = "Start";
$b = &$a;
$c = &$b;
$c = "End";
echo $a; // This echoes "End" as is expected
// The latter works just fine but the former doesn't. Why not?
?>
I posted a similar example on the PHP mailing list only to be told PHP doesn't support C pointers. What a nice piece of advice. Too bad it doesn't apply here.
This introduces all kinds of problems especially when using objects and trying to create object container classes.
Thanks,
Mike Heath
EffinityLabs.com