> ok, i see. But why does it work with variables that are set as global, > e.g. the $HTTP_*_VARS: > > <?php > function test() { > global $HTTP_GET_VARS; > $a = 'HTTP_GET_VARS'; > var_dump($$a); > } > test(); > ?> > global $foo; is the equivalent of: $foo = &$GLOBALS['foo'];
So when you access $$a, you're getting 'HTTP_GET_VARS' from the LOCAL symbol table (where it exists as a reference of the global symtable version). > this works inside a function. is it because of the global keyword? If so, > why can't there be a "magic" "global $_GET, $_POST, $_SESSION ..." set in > every function, for every superglobal, instead of the way it is handled > now? The thing i don't get is, why the superglobals behave differently > than "normal" global variables at all. In a word: efficiency. There's an expression: "Fast, Clean, Cheap: Pick Two". The current implementation is Fast and Cheap, but as this thread has highlighted, it's not entirely clean. > Ok, you have explained the technical reasons, but that's not what i mean. > For me as a php user (developing in php), the only difference should be, > that i don't have to use the global keyword. Everything else seems like a > bug or design flaw to me. > You won't hear a lot of argument from me. I just care less that it is the way it is. -Sara -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php