RSS: Vše - Programování



$GLOBALS vs. global

23. 10. 2007, 11:24:26,Programování,

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

Autor: Pavel Šindelka

Komentáře


[1] (Artur) - 24. 10. 2007, 09:43:01
Vida, to jsem nevěděl!

Komentovat


Tento článek byl uzavřen. Už není možné k němu přidávat komentáře ani hlasovat