PHP Manual
/
Premenné

Globálne premenné v PHP

22. 08. 2019

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.

Získavanie vstupných parametrov z adresy URL

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:

Související články

1.
4.
Status:
All systems normal.
2024