Bug #6231 Updated: Reference parsing problem

From: 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

« previous php.dev (#73287) next »