Директива global
делает локальную функцию частью глобальной области видимости верхнего уровня. Он не будет выполнять итерацию обратно в стек вызовов функций, чтобы найти переменную с таким именем, он просто перейдет обратно к абсолютному верхнему уровню, так что если вы сделали:
$test = ''; // this is the $test that `global` would latch on to
function f1() { ... }
function f2() { ... }
В принципе, global
считается эквивалентом:
$test =& $GLOBALS['test']; // make local $test a reference to the top-level $test var