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