ID: 6231
Updated by: yohgaki
Reported By: [EMAIL PROTECTED]
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] [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
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]