Re: Re: Strange notation to create object

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxx>
To: "Matthew Weier O'Phinney" <matthew@xxxxxxxxxx>
Cc: "PHP-General" <php-general@xxxxxxxxxxxxx>
Sent: Thursday, June 23, 2005 11:50 PM
Subject: Re:  Re: Strange notation to create object


On Thu, 2005-06-23 at 15:28, Matthew Weier O'Phinney wrote:
* Robert Cummings <robert@xxxxxxxxxxxxx> :
> On Thu, 2005-06-23 at 13:36, Matthew Weier O'Phinney wrote:
> > * Robert Cummings <robert@xxxxxxxxxxxxx> :
> > > 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



--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux