Bug #6231 Updated: Reference parsing problem
| From: | yohgaki@php.net | Date: | Wed, 12 Dec 2001 13:02:57 +0000 |
| Subject: | Bug #6231 Updated: Reference parsing problem | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-73287@lists.php.net to get a copy of this message | ||
ID: 6231
Updated by: yohgaki
Reported By: rezinkin@mail.ru
Status: Analyzed
Bug Type: Scripting Engine problem
Old Operating System: Windows 95 OSR2
Operating System: Linux
Old PHP Version: 4.0.1pl2
PHP Version: 4.1.0
New Comment:
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...
Previous Comments:
------------------------------------------------------------------------
[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