note 20995 deleted from ref.variables by alindeman
| From: | alindeman@php.net | Date: | Wed, 24 Apr 2002 20:47:29 +0000 |
| Subject: | note 20995 deleted from ref.variables by alindeman | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-29799@lists.php.net to get a copy of this message | ||
There are some problems with your code. You're performing the if(version < 410) comparison
every iteration of the loop, but it's not like the version is going to change while the script
is running, is it? Wasted processing, inefficient code.
Also, I don't see why you're copying everything over and then unsetting the HTTP_xxx_VARs.
That again is a huge waste in processing power. What's the point of doing a deep copy of an
array if all you're going to do is unset the original??
By using this, you're (technically) making any script that runs this incompatible with php
4.1.0, since $HTTP_xxx_VARS arrays are still valid global variables in php>=4.1.0
It would be better to do this, in my opinion:
$vars = Array('GET', 'POST', 'COOKIE', 'SERVER',
'ENV', 'REQUEST', 'SESSION');
$php_version = preg_replace("/[^\d]/", '', phpversion());
if($php_version < 410)
{
foreach($vars as $var)
{
$oldname = "HTTP_$var_VARS";
$GLOBALS["_$var"] = & $$oldname;
}
}
Lastly, I don't think that having a variable in the GLOBALS array necessarily makes it a
"superglobal" variable. You'll more than likely still have to import it into
function scope using the global keyword:
function foo()
{
global $_GET;
}
After all, any other variable created in global scope still has to be imported into function
scope...
Take care,
Nik