Globální proměnné v PHP

   06. 07. 2020

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()
{
	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í.

Získání vstupních parametrů z URL

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();
Nechte si posílat nové články do mailu:

Jan Barášek     Více o autorovi

Autor článku podniká jako fullstack senior developer v Praze. Spravuje 300 různě velkých webových projektů, fungujících dodnes. Během spolupráce nabral hluboké zkušenosti, které na tomto webu předává dál.

Rád vám pomůžu:

Kontakt Konzultace a služby Nabídka spolupráce