Globálne premenné sú k dispozícii kedykoľvek v ktorejkoľvek časti aplikácie a nie je potrebné ich odovzdávať.
Upozornenie: Dobre navrhnutá aplikácia by nemala používať globálne premenné, pretože porušujú princíp zapuzdrenia a pri neopatrnej manipulácii môžu spôsobiť ťažko odhaliteľné chyby.
Príklad použitia:
$a = 1;$b = 2;function suma(): void{global $a, $b;$b = $a + $b;}suma();echo $b; // vypíše číslo 3, pretože premenná $b je globálna
Všimnite si, že premenné $a
a $b
sme získali mimo ich prirodzeného kontextu. Toto správanie sa označuje ako "magic", pretože ak iná funkcia prepíše aktuálne používané premenné, v aplikácii nastane neočakávaný stav.
Správne by mala aplikácia zapúzdriť a zakaždým odovzdať premenné:
$a = 1;$b = 2;function suma(int $a, int $b): int{return $a + $b;}echo suma($a, $b); // vytlačí 3
Vďaka tomu môžeme funkciu volať dynamicky s rôznymi vstupnými parametrami a jej výstup bude závisieť len od vstupov, nie od prostredia.
Jediné rozumné použitie globálnych premenných je snáď len pri analyzovaní používateľských vstupov, v takom prípade hovoríme o superglobálnych premenných.
V tomto prípade ide o čistý návrh, pretože premenná by mala byť len na čítanie, nie na zápis, a navyše je rovnaká v celej aplikácii:
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:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | sk