Re: Re: Strange notation to create object
| From: | vieonet forums | Date: | Fri, 24 Jun 2005 07:32:19 +0000 |
| Subject: | Re: Re: Strange notation to create object | ||
| References: | 1 2 3 4 5 6 7 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-217536@lists.php.net to get a copy of this message | ||
In php5 any object is moving as reference. you need special declaration, if you want to duplicate(copy/clone) an object.
regards
david
----- Original Message ----- From: "Robert Cummings" <robert@interjinn.com>
To: "Matthew Weier O'Phinney" <matthew@garden.org>
Cc: "PHP-General" <php-general@lists.php.net>
Sent: Thursday, June 23, 2005 11:50 PM
Subject: Re: [PHP] Re: Strange notation to create object
On Thu, 2005-06-23 at 15:28, Matthew Weier O'Phinney wrote:* Robert Cummings <robert@interjinn.com> :On Thu, 2005-06-23 at 13:36, Matthew Weier O'Phinney wrote:* Robert Cummings <robert@interjinn.com> :See for yourself when running the following script: <?phpOn Thu, 2005-06-23 at 11:32, Matthew Weier O'Phinney wrote:Would you mind explaining the difference? I've seen nothing in the docs, to indicate that assigning objects with =& in PHP5 is necessary, or even desired. My experience with PHP5 hasn't shown this either. I'd be interested to know to what you refer.The above notation is unnecessary when developing in PHP5, as objects in PHP5 are passed by reference by default. However, in PHP4, this wasNot entirely, there's still a subtle difference in PHP5 between assigning an object with = versus assigning with = &.class a { }class b { }$aObj = new a(); $bObj = new b();$foo1 = $aObj; $foo2 = $aObj; $foo3 = $foo1; $foo4 = &$foo2;echo "------------------\n"; print_r( $foo1 ); print_r( $foo2 ); print_r( $foo3 ); print_r( $foo4 );$foo1 = $bObj; $foo2 = $bObj;echo "------------------\n"; print_r( $foo1 ); print_r( $foo2 ); print_r( $foo3 ); print_r( $foo4 );$foo1 = &$aObj;?>This doesn't demonstrate what the OP was talking about, which is initial assignment of an object using a reference operator. The results of this make perfect sense to me -- the references are passed exactly as I would expect. Let me rephrase my question to you: is there a reason to do the initial object assignment using a reference operator using PHP5? I.e., is there a good reason to do this:Your original response said that the above notation was unneccessary, I took that to mean the & operator for reference. Looking back I see ow that your comment was ambiguous, and I agree there is no need for the & when assigning a new object. I was merely clarifying that references and normal assignment are not synonymous for objects in PHP 5. Cheers, Rob. -- .------------------------------------------------------------. | InterJinn Application Framework - http://www.interjinn.com | :------------------------------------------------------------: | An application and templating framework for PHP. Boasting | | a powerful, scalable system for accessing system services | | such as forms, properties, sessions, and caches. InterJinn |$foo =& new Foo();instead of:$foo = new Foo();I haven't seen any reason to do the former case using PHP5.| also provides an extremely flexible architecture for | | creating re-usable components quickly and easily. |`------------------------------------------------------------' -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php