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

Reply via email to