ID:               22981
 Updated by:       [EMAIL PROTECTED]
 Reported By:      Jens dot Pilgrim at xx-well dot com
-Status:           Verified
+Status:           Closed
 Bug Type:         Scripting Engine problem
 Operating System: Windows 2000
 PHP Version:      4.3.0
 New Comment:

Fixed in PHP 5.



Previous Comments:
------------------------------------------------------------------------

[2003-05-05 15:18:05] [EMAIL PROTECTED]

related to bug #22231

------------------------------------------------------------------------

[2003-03-31 08:43:50] Jens dot Pilgrim at xx-well dot com

Hi,

I've got a problem with the "=& new" construct. A code sample tells
more
than 1000 words:

<?php

class foo {}

$g_fooInstance = null;

class factory {
  function factory() {
    global $g_fooInstance;
    if (is_null($g_fooInstance)) {
      $g_fooInstance =& new foo();   // <-- here's the problem
//      $g_fooInstance = new foo();  // <-- this works
    }
  }
}

function main() {
  $theFactory =& new factory();
  global $g_fooInstance;
  if (is_null($g_fooInstance)) {
    echo ('This isn\'t expected - why is it null?');
  } else {
    echo ('It works as expected');
  }
}

// run
main();
?>

This code is running like that and demonstrates exactly the "weird"
behaviour.
Running this example, the variable $g_fooInstance is null in function
main(). But why? Is the reference to the constructed object descructed
after leaving the scope of function factory::factory()? Or in other
words, are locally created instances always destructed, regardless if
there are other references on the instance?

I've posted this bug as a question in the general mailing list (on Fr
03/28/2003), and others tested and reproduced this bug too...

Regards,

jens



------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=22981&edit=1

Reply via email to