PHP 4.0 Bug #9620: new operator does not behave correctly
| From: | passionplay at hotmail dot com | Date: | Thu, 08 Mar 2001 13:27:45 +0000 |
| Subject: | PHP 4.0 Bug #9620: new operator does not behave correctly | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-48247@lists.php.net to get a copy of this message | ||
From: passionplay@hotmail.com
Operating system: Linux-Mandrake
PHP version: 4.0.4pl1
PHP Bug Type: Scripting Engine problem
Bug description: new operator does not behave correctly
I submitted this bug previous and was told that this is how the new operator is supposed to work. I
submit to you that in every other instance this makes sense, but for self referencing constructs,
especially with the new operator, the fact that =new is not interpreted as =&new does not make
sense whatsoever because why would I want to assign a copy of the object I just created, especially
if that object opens files? Is there EVER a situation where I want to assign ANYTHING other than the
object I just created???
Thank you.
--------- Response follows ------------------
Yes, when you do a $obj = new Foo(), the object is copied.
Use =& if you want reference.
Previous Comments:
---------------------------------------------------------------------------
[2001-02-27 09:16:56] passionplay@hotmail.com
$objectlist=array();
class MyClass
{
function MyClass()
{
global $objectlist;
// Save the reference for later use
$objectList[]=&$this;
}
};
// the object referred to by $myobject is NOT in the array
$myobject = new MyClass();
// $myobject2 exists in the array
$myobject2 =& new MyClass();
It appears that there is an object being copied when returning from the
constructor. What am I doing wrong?
I'm not supposed to return anything from the constuctor.
--
Edit Bug report at: http://bugs.php.net/?id=9620&edit=1