Za darmo na e-mailPraktyczny kurs PHP (aż 200 stron!)

Krok po kroku, opanuj podstawy PHP za darmo - praktyczny kurs w formie e-booka prosto na Twój e-mail

Jak działają zmienne globalne w PHP?

odsłon: 1.09K
0
Komentarzy: 0

Staram się zrozumieć koncepcję zmiennych globalnych w PHP. W całym kursie nie znalazłem o tym żadnej wzmianki, a potrzebujemy ten temat omówić na studiach.

Rozumiem, że istnieje słowo kluczowe global, które sprawia, że zmienna wewnątrz funkcji staje się widoczna na zewnątrz. Zastanawiam się tylko, jakie to znajduje zastosowanie w praktyce i czy w ogóle się tego używa? Co jeśli mam już zmienną o takiej nazwie zdefiniowaną poza funkcją? Czy jej wartość się nadpisze?

Będę wdzięczny za wprowadzenie do tematu ze “strony praktycznej”. Dzięki!

odpowiedział na pytanie
Dodaj komentarz
0

Działają dokładnie tak, jak to opisałeś. Jeśli zadeklarujesz zmienną poza kontekstem klasy czy funkcji, to będzie to zmienna globalna. Natomiast, jeśli znajdujesz się już wewnątrz funkcji, to kontekst się zmienia i tutaj już ta zmienna spoza funkcji nie jest widoczna.

Jest to trochę nieintuicyjne, gdyż w wiodących językach programowania (jak w C, C# czy Java) zmienne z wyższego kontekstu są widoczne w kontekście niższym i mogą być, ewentualnie, nadpisane przez kolejne definicje.

W PHP zmienne są tworzone ad-hoc, bez potrzeby ich wcześniejszej deklaracji. Stąd trochę zamieszania z tymi kontekstami.

Szczerze mówiąc, w praktycznym podejściu do programowania w PHP, z polecenia global korzysta się raczej rzadko (jeśli w ogóle). Szczególnie przy podejściu programowania zorientowanego obiektowo.

W podejściu proceduralnym mógłbym sobie wyobrazić taką sytuację:

<?php
 $username = "nie zalogowano";
 function zaloguj() {
  // mechanizm logowania
  global $username = "Marcin";
}

Wtedy, po wykonaniu funkcji zaloguj, do zmiennej globalnej $username przypisalibyśmy wartość Marcin. Jednak takie podejście jest bardzo ryzykowne, bo każda funkcja może nam mieszać w wartościach zmiennych poza funkcją. Ciężko nad tym zapanować.

Dużo rozsądniej jest zwrócić wartość Marcin poleceniem return, po czym przypisać do zmiennej globalnej $username = zaloguj(); co daje nam przejrzystą sytuację.

odpowiedział na pytanie
Dodaj komentarz
Wpisz swoją odpowiedź.
Ominiesz taką okazję?Praktyczny Kurs PHP (aż 200 stron!) za darmo

Gorąco polecam, naprawdę warto skorzystać! To nic nie kosztuje. Krok po kroku, opanuj podstawy PHP za darmo - praktyczny kurs w formie e-booka prosto na Twój e-mail.