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