PHP global or $GLOBALS
Solution 1:
Well, you should only use globals in limited circumstances, but to answer your question:
-
global
is potentially marginally faster (it will rarely make a difference). -
$GLOBALS
(not$GLOBAL
) is more readable, because every time you see it, you know you are accessing/changing a global variable. This can be crucial in avoiding nasty bugs. - Inside the function, if you want to unset a global variable, you must use
unset($GLOBALS['varname'])
, notglobal $varname; unset($varname);
.
As to points 1 and 2, I'll quote Sara Golemon here:
What does that mean for your use of the
$GLOBALS
array? That's right, theglobal
keyword is technically faster. Now, I want to be really clear about one thing here. The minor speed affordance given by using your globals as localized [compiled variables] needs to be seriously weighed against the maintainability of looking at your code in five years and knowing that$foo
came from the global scope.something_using($GLOBALS['foo']);
will ALWAYS be clearer to you down the line thanglobal $foo; /* buncha code */ something_using($foo);
Don't be penny-wise and pound foolish..
Solution 2:
What you should really do is pass the variable to the function instead of using a global at all.
An example how to change a variable outside of the function via passing it as reference parameter:
function myFunc(&$myVar)
{
$myVar = 10;
}
$foo = 0;
myFunc($foo);
var_dump($foo); // yields 10
Solution 3:
Use global
at the top of your function. That way, you can easily see what globals are used.