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