My apologies... this examples better clarifies your point and I must admit that it is rather strange behaviour :) And I think I forgot that PHP does do deep copies, probably because I'm so used to writing wrapper objects with references to my real objects so I automate shallow copies.
Cheers, Rob. brad lafountain wrote: > > > I do understand the difference... but it also doesn't say it does a shallow > copy. because it DOES do a deep copy.... run the following code.. > > <? > class foo > { > function foo() > { > $this->bar = new bar(); > } > } > > class bar > { > function bar() > { > $this->tmp = "bar"; > } > function do_nothing() > { > } > } > > // As you see no shallow copy!! > $foo = new foo(); > $foo->bar->tmp = "test"; > $foo2 = $foo; > $foo2->bar->tmp = "foo"; > var_dump($foo); > var_dump($foo2); > > // now.... > $foo->bar->do_nothing(); > $foo3 = $foo; > $foo3->bar->tmp = "bug"; > var_dump($foo); > var_dump($foo3); > ?> > > as soon as a function is called from a objects member.. this is where the > refrence is created! > > - Brad -- .-----------------. | Robert Cummings | :-----------------`----------------------------. | Webdeployer - Chief PHP and Java Programmer | :----------------------------------------------: | Mail : mailto:[EMAIL PROTECTED] | | Phone : (613) 731-4046 x.109 | :----------------------------------------------: | Website : http://www.webmotion.com | | Fax : (613) 260-9545 | `----------------------------------------------' -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.php