Bug #6231 Updated: Reference parsing problem
| From: | mfischer@php.net | Date: | Sat, 01 Jun 2002 15:40:43 +0000 |
| Subject: | Bug #6231 Updated: Reference parsing problem | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-9076@lists.php.net to get a copy of this message | ||
ID: 6231
Updated by: mfischer@php.net
Reported By: rezinkin@mail.ru
-Status: Analyzed
+Status: Closed
Bug Type: Scripting Engine problem
Operating System: Linux
PHP Version: 4.1.0
New Comment:
This is fixed with the new ZE2 (the property is no longer suddenly
turning into a reference).
Previous Comments:
------------------------------------------------------------------------
[2001-12-12 08:02:57] yohgaki@php.net
Just an update.
I verified with Linux and 4.1.0. I agrree with the last comment. There
is no need to use settype()....
But this problem should be addressed...
------------------------------------------------------------------------
[2000-08-31 08:56:47] stas@php.net
Well, I guess you shouldn't use settype there. I don't see why you
should.
------------------------------------------------------------------------
[2000-08-18 06:21:34] waldschrott@php.net
There´s really some problem here, I´ve cut down the code to
illustrate the problem. After calling settype() on an
already existent object (really don´t needed) named
$this->prop, settype() changes that property to a reference
(see var_dump() output)... apparently to a reference to the
equivalent property of another object, I can´t imagine that
was intended...
perhaps zend tried to be smart in any way...
class BOMainstr{ }
class BOMain2{
function BOMain2 () {
$this->storage = new BOMainstr();
var_dump($this->storage);var_dump($this);
settype($this->storage,'object');
var_dump($this->storage);var_dump($this); }
function get() { return $this->storage->ID; }
function set($ID) { $this->storage->ID = $ID; } }
$C = new BOMain2();
$C->set(1);
$D = $C;
$D->set(2);
echo "C->get() =>" . $C->get() .'<BR>'; echo "D->get()
=>" .
$D->get(); ?>
------------------------------------------------------------------------
[2000-08-18 04:14:49] rezinkin@mail.ru
How working object copieng?
Object copy as reference or as object copy?
------------------------------------------------------------------------
[2000-08-18 04:11:05] rezinkin@mail.ru
+++ Wrong class copieng +++
<?
/*
Class BOMain1 and BOMain2 are different in one string see below
*/
class BOMainstr{
// Class attributes
var $ID; // Object ID (integer)
} // end class definition
//-----------------------Class 1----------------------------
class BOMain1{
var $storage; //nested object
function BOMain1 ()
{
$this->storage = new BOMainstr();
}
function get() {
return $this->storage->ID;
}
function set($ID) {
$this->storage->ID = $ID;
}
} // end class definition
//-----------------------Class 2---------------------------- class
BOMain2{
var $storage; //nested object
function BOMain2 ()
{
$this->storage = new BOMainstr();
settype($this->storage,'object'); // Different string
}
function get() {
return $this->storage->ID;
}
function set($ID) {
$this->storage->ID = $ID;
}
} // end class definition
$A = new BOMain1();
$A->set(1);
$B = $A;
$B->set(2);
echo "A->get() =>" . $A->get() .'<BR>';
echo "B->get() =>" . $B->get() .'<HR>';
$C = new BOMain2();
$C->set(1);
$D = $C;
$D->set(2);
echo "C->get() =>" . $C->get() .'<BR>';
echo "D->get() =>" . $D->get();
?>
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=6231&edit=1