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'])
, not global $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, the global
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 than global $foo; /* buncha code */ something_using($foo);
Don't be penny-wise and pound foolish..
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…