-- Jason k Larson
Jens von Pilgrim wrote:
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? Is this a bug (the reference mechanism isn't working as expected) - or a feature (locally created instances are immediately after leaving the scope)? Maybe I've programmed Java too long...
Regards,
jens
-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php