WEBnSTUDY.com
Jezik PHP

PHP promenljive i konstante

Promenljive su osnovni alat u programiranju. Predstavljaju memorijske lokacije u kojima se čuvaju vrednosti. Kao što im ime kaže, njihova vrednost se može menjati tokom izvršavanja programa.

Sa druge strane, kada jednom dobiju vrednost, imenovane konstante se ne mogu menjati, ali program čine jasnijim i lakšim za održavanje.

Promenljive

Jezik PHP nije strogo tipiziran, što znači da ista promenljiva može menjati tip podatka koji sadrži (iako to ne preporučujemo). Promenljive ne deklarišemo ni na kakav poseban način - ona postaje definisana od trenutka kada joj dodelimo vrednost.

Naziv promenljive se sastoji iz slova engleske abecede, donje crte i cifara, s tim što ne može početi cifrom. Ispred naziva promenljive se uvek navodi znak za dolar ($). U nazivima promenljivih se razlikuju velika i mala slova.

$prom = [vrednost];

Oblast važenja promenljivih je kontekst u kome su definisane. To znači da promenljive koje su definisane na globalnom nivou ne važe unutar funkcija i obrnuto. Da bismo "aktivirali" globalnu promenljivu u funkciji, koristimo ključnu reč global.

function fun() { global $prom; // globalna promenljiva $x = [vrednost]; // lokalna - nema veze sa $x u glavnom programu } $prom = [vrednost]; $x = [vrednost];

Unutar funkcije je moguće definisati i statičku promenljivu, koja jeste lokalna, ali ne gubi vrednost kada se izvršavanje funkcije završi. To znači da kada ponovo pozovemo funkciju, ta promenljiva "nastavlja gde je stala" (čak i u rekurzivnim pozivima).

function fun() { static $broj = [konstanta]; // statička promenljiva $broj = [vrednost]; ... }

Statičke promenljive možemo da deklarišemo koristeći sanmo konkretnu, konstantnu vrednost, a ne izraz.

Konstante

Konstante predstavljaju predefinisane vrednosti koje se ne menjaju. Koristimo ih da bi program bio čitljiviji i lakši za održavanje, a istovremeno i brži (pošto se ne menjaju, konstante su brže od promenljivih).

Jednom definisane, konstante više ne mogu menjati vrednost.

Konstante se definišu korišćenjem funkcije define, koja ima dva argumenta. Prvi je naziv konstante (kao string), a drugi njena vrednost (takođe kao string). Iako (u novijim verzijama jezika) konstante mogu sadržati i resurse i kompleksne tipove, preporučujemo da im ipak dodeljujete samo proste tipove podataka - numeričke, string i logičke vrednosti.

define("NAZIV", "vrednost");

Naziv konstante se sastoji iz slova engleske abecede, donje crte i cifara, s tim što ne može početi cifrom.

U nazivima konstanti se razlikuju velika i mala slova, s tim što po konvenciji, konstantama dajemo nazive velikim slovima. Naziv konstante ne počinje znakom za dolar.

Oblast važenja konstanti je u celom programu, čak i unutar funkcija.

Primer


  function fun()
  {
    // $x i $y su globalne promenljive iz glavnog programa
    global $x, $y;
    
    echo $prom;  // 0 - $prom je lokalna
    echo $x;     // 2 - to je vrednost $x
    
    // globalna promenljiva $y se povećava za vrednost konstante MAKSIMUM
    $y += MAKSIMUM;
  }
  
  function zbir($x)
  {
    static $num = 0; // $num postaje 0 samo kada se prvi put pozove funkcija
    // static $num = $x+1; // izraz nije dozvoljen u deklaraciji
    
    $num += $x;
    echo $num;
  }
  
  // GLAVNI PROGRAM
  
  define("MAKSIMUM", "10");  // definisali smo konstantu
  
  $prom = 20;
  $x = 2;
  $y = 8;
  
  if ($prom > MAKSIMUM) {
    fun();
  }
  
  zbir(7);    // ispisuje 7
  zbir($x);   // ispisuje 9 (pamti prethodno 7 i na to dodaje 2 iz $x
  
  1. PHP.net, Variables
  2. PHP.net, Constants
Svi elementi sajta Web'n'Study, osim onih za koje je navedeno da su u javnom vlasništvu, vlasništvo su autora i ne smeju se koristiti, u celosti ili delimično bez pismenog odobrenja autora. To uključuje tekstove, slike, ilustracije, animacije, prateći grafički materijal i programski kod.
Ovaj sajt koristi tehnologiju kolačića (cookies) radi vođenja interne statistike u cilju unapređenja korisničkog iskustva. Tako prikupljeni podaci su anonimni i nedostupni trećim licima. Vaša privatnost nije ugrožena ni na koji način.