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]

Reply via email to