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?

2.54K views
0
0 Comments

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!

Marcin Wesel Answered question 19 października 2020
Add a Comment
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ę.

Marcin Wesel Answered question 19 października 2020
Add a Comment
You are viewing 1 out of 1 answers, click here to view all answers.
Write your answer.
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.