PHP – Oblast delovanja varijabli

Do sada smo naučili kako se varijable definišu i upoznali smo se sa vrstama varijabli. Sledi vrlo važna priča koja se tiče varijabli, a to je oblast delovanja varijabli i njihov „vek trajanja“. Oblast delovanja varijable predstavlja deo programskog koda unutar koga data varijabla egzistira. Većina PHP varijabli ima lokalni karakter, što znači da je data varijabla „vidljiva“ samo unutar jedne procedure (ili funkcije), a nije „vidljiva“ i za druge procedure u PHP skriptu.

U sledećem PHP primeru videćemo dve oblasti delovanja varijabli:


<?php
$a = 1; /* globalna oblast delovanja */

Function Stampaj () {
echo $a; /* referenca ka varijabli lokalnog tipa*/
}

Stampaj ();
?>


Prethodni skript neće prouzrokovati nikakav izlaz (znači, neće biti štampana jedinica) jer naredba „echo“ referencira lokalnu varijablu „$a“, a lokalnoj „verziji“ ovoj varijabli nije dodeljena nikakva vrednost. Zbog ovoga, kada želimo da unutar funkcije upotrebljavamo globalne varijable moramo ih tako i definisati (globalne unutar funkcije):


<?php
$a = 1;
$b = 2;

Function Sabiranje () {
global $a, $b;

$b = $a + $b;
}

Sabiranje ();
echo $b;
?>


Rezultat gornjeg skripta biće „3“. Deklarisanjem varijabli „$a“ i „$b“ kao globalne unutar funkcije, mi smo izvršili referenciranje na promenljive koje se nalaze van funkcije. Pri tome, nema nikakvih ograničenja u broju globalnih varijabli kojima ćete manipulisati unutar jedne funkcije. U slučaju da u gornjem primeru, u funkciji „Sabiranje()“, niste definisali varijable kao globalne – rezultat bi bio „2“.

Prethodni primer možemo napisati i na drugi način.


<?php
$a = 1;
$b = 2;

Function Sabiranje () {
$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];
}

Sabiranje ();
echo $b;
?>


Ovde se pristup spoljnim varijablama vrši preko ugrađenog PHP definisanog niza „$GLOBALS“. Niz $GLOBALS je asocijativni niz naziva globalnih varijabli, gde indekse predstavljaju nazivi varijabli, te se preko njih dolazi do vrednosti samih globalnih varijabli.

Još jedna bitna mogućnost kada govorimo o oblasti delovanja varijabli, je i mogućnost njihovog definisanja kao statičkih varijabli („Static„). Statičke varijable egzistiraju samo u lokalnoj funkciji, s tim što ne gube svoju vrednost kada programom napustimo datu funkciju. Pogledajte sledeći primer:


<?php
Function Brojac () {
$a = 0;
echo $a;
$a++;
}
Brojac () ;
echo ‘<br>’ ;
Brojac () ;
?>

Ova funkcija je uglavnom beskorisna pošto svaki put kada se pozove (u našem slučaju dva puta), vrednost varijable „$a“ postavlja na nulu i štampa nulu. Instrukcijom „$a++“ vršimo povećanje vrednosti varijable za jedan, ali to ovde nema nikakvu funkciju, zbog toga što nakon ove instrukcije funkcija završava, a pri njenom ponovnom pozivu vrednost se vraća na nulu. Da bi funkcija „Brojac()“ stvarno bila korisna, varijablu „$a“ moramo definisati kao statičku:


<?php
Function Brojac () {
static $a = 0;
echo $a;
$a++;
}
Brojac () ;
echo ‘<br>’ ;
Brojac () ;
?>

Sada će nakon svakog poziva funkcije, vrednost varijable „$a“ uvećati za jedan (kao na slici). Ovakvim definisanjem vrednost lokalne varijable čuvamo u memoriji i nakon završetka date funkcije.

Pratite Krstaricu na www.krstarica.com