#30345 [NEW]: Unable to access predifined variables as variable variables from functions

From: Date: Wed, 06 Oct 2004 21:20:37 +0000
Subject: #30345 [NEW]: Unable to access predifined variables as variable variables from functions
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-67205@lists.php.net to get a copy of this message
From: talex_id at o2 dot ru Operating system: FreeBSD PHP version: 4.3.8 PHP Bug Type: *General Issues Bug description: Unable to access predifined variables as variable variables from functions Description: ------------ PHP allows to use 'variable variables', constructions, like a $$name or ${$name}, where $name is a string. But if i try to access to $GLOBALS from function using this method ($$name or ${$name}, where $name = 'GLOBALS') i can't get it until i use its name at least one time into function (or method) body. It's enouth to add string $GLOBALS; (to 'touch') to make it visible from $$name construction. Another predifned variables are unaccessible even if i set some values to them into function body. See code examples (http://talex-id.o2.ru/devel/php/bugs/predefined_variables1.php.txt and http://talex-id.o2.ru/devel/php/bugs/predefined_variables2.php.txt). I used CLI version of PHP to test them. Reproduce code: --------------- <?php function f1() { echo 'GLOBALS, direct : ' . $GLOBALS . "\n"; echo 'GLOBALS, string in "{}" : ' . ${'GLOBALS'} . "\n"; } function f2() { $g_name = 'GLOBALS'; echo 'GLOBALS, string from variable in "{}" : ' . ${$g_name} . "\n"; } function f3() { $g_name = 'GLOBALS'; $GLOBALS; // Now we just have to touch GLOBALS variable to make it visible echo 'GLOBALS, toched, string from variable in "{}" : ' . ${$g_name} . "\n"; } f1(); echo "----------------------------------------------------\n"; f2(); echo "----------------------------------------------------\n"; f3(); ?> Expected result: ---------------- GLOBALS, direct : Array GLOBALS, string in "{}" : Array ---------------------------------------------------- GLOBALS, string from variable in "{}" : Array ---------------------------------------------------- GLOBALS, toched, string from variable in "{}" : Array Actual result: -------------- GLOBALS, direct : Array GLOBALS, string in "{}" : Array ---------------------------------------------------- GLOBALS, string from variable in "{}" : ---------------------------------------------------- GLOBALS, toched, string from variable in "{}" : Array -- Edit bug report at http://bugs.php.net/?id=30345&edit=1 -- Try a CVS snapshot (php4): http://bugs.php.net/fix.php?id=30345&r=trysnapshot4 Try a CVS snapshot (php5.0): http://bugs.php.net/fix.php?id=30345&r=trysnapshot50 Try a CVS snapshot (php5.1): http://bugs.php.net/fix.php?id=30345&r=trysnapshot51 Fixed in CVS: http://bugs.php.net/fix.php?id=30345&r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=30345&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=30345&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=30345&r=needscript Try newer version: http://bugs.php.net/fix.php?id=30345&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=30345&r=support Expected behavior: http://bugs.php.net/fix.php?id=30345&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=30345&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=30345&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=30345&r=globals PHP 3 support discontinued: http://bugs.php.net/fix.php?id=30345&r=php3 Daylight Savings: http://bugs.php.net/fix.php?id=30345&r=dst IIS Stability: http://bugs.php.net/fix.php?id=30345&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=30345&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=30345&r=float MySQL Configuration Error: http://bugs.php.net/fix.php?id=30345&r=mysqlcfg

« previous php.bugs (#67205) next »