Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Zmienna globalna
xfighter
post 25.05.2014, 15:00:51
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 30.05.2012

Ostrzeżenie: (0%)
-----


Witam.

Jak zrobić aby zmienna była widoczna w całym projekcie. Raz ustawiona na początku nie zmienia i pamięta swoją wartość aż w kodzie nie przypisze się jej innej wartości?
Go to the top of the page
+Quote Post
markonix
post 25.05.2014, 19:32:33
Post #2





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


$zmienna = true;


--------------------
Go to the top of the page
+Quote Post
p-f
post 25.05.2014, 20:57:01
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 30.12.2008

Ostrzeżenie: (0%)
-----


$GLOBALS['zmienna'] = 'wartosc';
Go to the top of the page
+Quote Post
KrzysiuFFF
post 27.05.2014, 06:04:52
Post #4





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 27.05.2014

Ostrzeżenie: (0%)
-----


Cytat(markonix @ 25.05.2014, 20:32:33 ) *
$zmienna = true;

Nie, ponieważ
  1. $zmienna = true;
  2. function foo() {
  3. return $zmienna;
  4. }
  5. var_dump(foo(), $zmienna);

da wynik false, true - chociaż dwa razy zwraca $zmienna.

W tym przypadku można zrobić, tak jak rzecze p-f:
  1. $GLOBALS['zmienna'] = true;
  2. function foo() {
  3. return $GLOBALS['zmienna'];
  4. }
  5. var_dump(foo(), $GLOBALS['zmienna']); //true true


Można też np.
  1. $zmienna = true;
  2. function foo() {
  3. return $GLOBALS['zmienna'];
  4. }
  5. var_dump(foo(), $zmienna); //true true


Albo
  1. $zmienna = true;
  2. function foo() {
  3. global $zmienna;
  4. return $zmienna;
  5. }
  6. var_dump(foo(), $zmienna); //true true


Chodzi o to, że $GLOBALS to tablica zawierająca wszystkie zmienne globalne. Można do niej coś wsadzić i z niej odczytać, ale zmienne się też do niej same dodają. A zmienna staje się globalną, jeśli zostanie zadeklarowana w global scope, tj. poza funkcjami, klasami itd. Które rozwiązanie jest najlepsze? Najwygodniejsze dla Ciebie. Jeśli w funkcji będziesz dużo operował na zmiennej, to będzie wygodniej dodać to "global $zmienna;" - wtedy funkcja nie będzie korzystała z lokalnej zmiennej, gdy napiszesz $zmienna, ale z globalnej, czyli takiej, jaką chcesz.

Chyba, że chodzi Ci także o przesyłanie między stronami. Wtedy można użyć sesji: http://www.php.net/manual/en/reserved.variables.session.php - tylko wtedy dochodzi sporo problemów z bezpieczeństwem.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 26.04.2025 - 03:28