|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2000-08-18 04:11 UTC] rezinkin at mail dot 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();
?>
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Wed Oct 29 03:00:01 2025 UTC |
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(); ?>