Zmienne globalne są dostępne w dowolnym momencie w dowolnej części aplikacji i nie trzeba ich przekazywać.
Ostrzeżenie: Dobrze zaprojektowana aplikacja nie powinna używać zmiennych globalnych, ponieważ naruszają one zasadę hermetyzacji i mogą powodować trudne do wykrycia błędy, jeśli są obsługiwane nieostrożnie.
Przykładowe zastosowanie:
$a = 1;$b = 2;function suma(): void{global $a, $b;$b = $a + $b;}suma();echo $b; // wypisuje liczbę 3, ponieważ zmienna $b jest globalna
Zwróćmy uwagę, że zmienne $a
i $b
otrzymaliśmy poza ich naturalnym kontekstem. Takie zachowanie jest określane mianem "magii", ponieważ jeśli inna funkcja zastąpi aktualnie używane zmienne, w aplikacji wystąpi nieoczekiwany stan.
Prawidłowo aplikacja powinna za każdym razem kapsułkować i przekazywać zmienne:
$a = 1;$b = 2;function suma(int $a, int $b): int{return $a + $b;}echo suma($a, $b); // drukuje 3
Dzięki temu możemy dynamicznie wywoływać funkcję z różnymi parametrami wejściowymi, a jej wynik będzie zależał tylko od danych wejściowych, a nie od otoczenia.
Być może jedynym sensownym zastosowaniem zmiennych globalnych jest parsowanie danych wejściowych użytkownika, w którym to przypadku mówimy o zmiennych globalnych.
W tym przypadku jest to czysty projekt, ponieważ zmienna powinna być tylko do odczytu, a nie tylko do zapisu, a ponadto jest taka sama w całej aplikacji:
function getNameFromUrl(): string{return isset($_GET['nazwa'])? htmlspecialchars($_GET['nazwa']): '';}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: ... | pl