This is a scaled down example of something I'm doing in some code. The results are very funky. I guess I could understand this happening if $two was out of scope when print_r($this) was called in One()...actually no I couldn't.
<?php Class One { function One() { $this->test = array(); $two = new Two( $this ); print_r( $this ); } function set( $index, $value ) { $this->test[$index] = $value; } } Class Two { var $one = null; function Two( &$one ) { $this->one = $one; $this->one->set( 'foo', 1 ); print_r($this); } } $obj = new One; ?> OUTPUT: two Object ( [one] => one Object ( [test] => Array ( [foo] => 1 ) ) ) one Object ( [test] => Array ( ) ) This only happens if you assign the reference passed to the second class as an instance variable. If you call the reference directly, the variable persists. ie: <?php Class One { function One() { $this->test = array(); $two = new Two( $this ); print_r( $this ); } function set( $index, $value ) { $this->test[$index] = $value; } } Class Two { var $one = null; function Two( &$one ) { $one->set( 'foo', 1 ); } } $obj = new One; ?> OUTPUT: one Object ( [test] => Array ( [foo] => 1 ) ) Any Ideas? Ryan Briones -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php