Globální proměnné jsou kdykoli k dispozici v každé části aplikace a nemusíme je předávat.
Pozor: Dobře navržená aplikace by neměla globální proměnné používat, protože porušují princip zapouzdřenosti a při neopatrném zacházení dochází k těžko odhalitelným chybám.
Příklad použití:
$a = 1;$b = 2;function suma(): void{global $a, $b;$b = $a + $b;}suma();echo $b; // vypíše číslo 3, protože proměnná $b je globální
Všimněte si, že jsme získali proměnnou $a
a $b
mimo její přirozený kontext. Toto chování se označuje jako "magické", protože pokud jiná funkce přepíše aktuálně používané proměnné, tak dojde k nečekanému stavu aplikace.
Správně by se měla aplikace zapouzdřit a proměnné pokaždé předávat:
$a = 1;$b = 2;function suma(int $a, int $b): int{return $a + $b;}echo suma($a, $b); // vypíše 3
Díky tomuto můžeme funkci volat dynamicky s různými vstupními parametry a její výstup bude závislý jen na vstupech, nikoli okolním prostředí.
Snad jediný rozumný způsob využití globální proměnných je u parsování vstupu uživatele, v takovém případě hovoříme o superglobální proměnné.
V tomto případě jde o čistý návrh, protože by proměnná měla sloužit pouze pro čtení, nikoli pro zápis a navíc je v celé aplikaci stejná:
function getNameFromUrl(): string{return isset($_GET['name'])? htmlspecialchars($_GET['name']): '';}echo getNameFromUrl();
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Nabízím trénink vývojářů, konzultace, školení a analýzu návrhových vzorů. Osobně v Praze nebo online.
Napište mi, pokud si nevíte rady.
Lektor: Jan Barášek
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | cs