Bug #15810 Updated: superglobals does not work with dynamic vars in functions

From: Date: Fri, 01 Mar 2002 17:07:42 +0000
Subject: Bug #15810 Updated: superglobals does not work with dynamic vars in functions
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-1417@lists.php.net to get a copy of this message
ID: 15810 Updated by: postings.php.net@hans-spath.de Reported By: goba@php.net Status: Open Bug Type: Feature/Change Request Operating System: win2k PHP Version: 4.1.0 New Comment: DUPLICATE I've reported this bug before. Bug #15730. Previous Comments: ------------------------------------------------------------------------ [2002-03-01 10:39:44] goba@php.net 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] derick@php.net 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] goba@php.net 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/?id=15810&edit=1

« previous php.bugs (#1417) next »