|
Posted by "vieonet forums" on 10/21/39 11:20
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
>
>
[Back to original message]
|