Re: Re: Strange notation to create object

From: 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> :
On Thu, 2005-06-23 at 11:32, Matthew Weier O'Phinney wrote:
The above notation is unnecessary when developing in PHP5, as objects in PHP5 are passed by reference by default. However, in PHP4, this was
Not entirely, there's still a subtle difference in PHP5 between assigning an object with = versus assigning with = &.
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.
See for yourself when running the following script: <?php
    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:
    $foo =& new Foo();
instead of:
    $foo = new Foo();
I haven't seen any reason to do the former case using PHP5.
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 |
| 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


« previous php.general (#217536) next »