$GLOBALS vs. global
Velice zákeřný a přitom nepříliš známý rozdíl, který může zaskočit nejednoho vývojáře v PHP. Konstrukce global $var; v PHP4 a výšším ve skutečnosti nezpřístupňuje globální proměnnou (jako tomu bylo ve starších verzích PHP), ale namísto toho na ní pouze vytváří odkaz. Tzn. je to totéž, jako:
$var =& $GLOBALS["var"];
To například znamená, že odnastavení $var neodnastaví globální proměnnou. A pro následující případ, který dobře fungoval v PHP 3, je v PHP 4 třeba provést namísto unset($id); příkaz unset($GLOBALS["id"]);
$id = 1;
function test()
{
global $id;
unset($id);
}
test();
echo($id);
Bližší info naleznete na http://cz2.php.net/manual/cs/migration4.variables.php nebo http://cz2.php.net/manual/cs/language.references.spot.php#references.global