ID: 6231
Updated by: [EMAIL PROTECTED]
Reported By: [EMAIL PROTECTED]
-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] [EMAIL PROTECTED]
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] [EMAIL PROTECTED]
Well, I guess you shouldn't use settype there. I don't see why you
should.
------------------------------------------------------------------------
[2000-08-18 06:21:34] [EMAIL PROTECTED]
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] [EMAIL PROTECTED]
How working object copieng?
Object copy as reference or as object copy?
------------------------------------------------------------------------
[2000-08-18 04:11:05] [EMAIL PROTECTED]
+++ 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