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

 ID:                 15810
 Updated by:         [email protected]
 Reported by:        [email protected]
 Summary:            superglobals does not work with dynamic vars in
                     functions
-Status:             Open
+Status:             Bogus
 Type:               Feature/Change Request
-Package:            Feature/Change Request
+Package:            *General Issues
 Operating System:   win2k
 PHP Version:        4.1.0
 Block user comment: N
 Private report:     N

 New Comment:

Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

You have to reference it once using the proper name or disable JIT in
php.ini


Previous Comments:
------------------------------------------------------------------------
[2002-03-01 12:13:39] [email protected]

This is actually a dupe of 15730 but this one has some more info so I'm
closing the 15730...

------------------------------------------------------------------------
[2002-03-01 12:07:41] postings dot php dot net at hans-spath dot de

DUPLICATE



I've reported this bug before. Bug #15730.

------------------------------------------------------------------------
[2002-03-01 10:39:44] [email protected]

The strange thing is that it works in global scope, but not in function
scope. I quess people will try to use this for similar thing such as



$var = "HTTP_" . $method . "_VARS";

global $$var;

$form = $$var;



or



$form = $GLOBALS["HTTP_" . $method . "_VARS"];



But using



$form = ${"_$method"};



is much more simple, and requires no globals...



This is inconsistent as it works outside of functions

but not inside of functions, although we advertise

the superglobals, as they behave the same inside

or outside any scope... I hit this 'bug' because I wanted

to use exactly this short thing...

------------------------------------------------------------------------
[2002-03-01 09:55:30] [email protected]

It was not supposed to work, so I'm making this a feature request.

If you want  I can dig up some old mail / chat logs about this...



Derick

------------------------------------------------------------------------
[2002-03-01 09:51:27] [email protected]

See the attached example. The first print_r() in the

function does not print out anything, while the second 

prints out the contents of $_GET. I have set $_GET to a

dummy array to let you test without a server.



Conclusion: dynamic names does not work for superglobals

in functions (I have also tested them in methods, but

these handled the same as functions...). Though

dynamic names work in global scope for superglobals...



<?php



$_GET = array("aa");



$method = "_GET";

$var = $$method;

echo "\n$method vars in global scope:\n";

print_r($var); // prints out the array



function test ()

{

    $method = "_GET";

    $var = $$method;

    echo "\n$method vars in test func:\n";

    print_r($var); // prints out nothing

    

    echo "\n_GET vars in test func:\n";

    $var = $_GET;

    print_r($var); // prints out the array

    

}



test();



?>

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



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

Reply via email to