Spremenljivke uporabljamo za shranjevanje različnih vrednosti. V spremenljivko lahko shranimo števila, nize, logične vrednosti, polja, objekte in druge podatke. Ime spremenljivke v PHP vedno začnemo z znakom $, nato pa napišemo njeno ime.
Osnovna pravila
- Ime spremenljivke se v PHP vedno začne z znakom
$. - Ime spremenljivke lahko vsebuje črke, številke in podčrtaj
_. - Ime spremenljivke se ne sme začeti s številko.
- PHP razlikuje med velikimi in malimi črkami, zato
$imein$Imenista ista spremenljivka.
Pomni: Dobro izbrano ime spremenljivke naj jasno pove, kaj spremenljivka vsebuje. Pregledna imena izboljšajo razumljivost kode.
Primer spremenljivk
Spodnji primer prikazuje preprosto uporabo treh spremenljivk in njihov izpis.
<?php
$pozdrav = "Pozdravljen!";
$stevilo = 4;
$drugoStevilo = 8;
echo $pozdrav . "<br>";
echo $stevilo . "<br>";
echo $drugoStevilo;
?>
4
8
Dinamično tipiziranje
PHP je dinamično tipiziran jezik. To pomeni, da pri navadnih spremenljivkah praviloma ni treba vnaprej zapisati podatkovnega tipa, saj PHP tip določi glede na vrednost, ki jo shranimo.
V sodobnem PHP lahko uporabljamo tudi tipske deklaracije pri funkcijah, metodah, povratnih vrednostih in lastnostih razredov, vendar navadne spremenljivke še vedno nastajajo brez posebne predhodne deklaracije tipa.
Pozor: Dinamično tipiziranje ne pomeni, da podatkovni tipi niso pomembni. Napačno razumevanje tipa podatka lahko povzroči nepričakovane rezultate pri primerjanju, seštevanju ali preverjanju pogojev.
Dinamične spremenljivke
PHP omogoča tudi tako imenovane dinamične spremenljivke. To pomeni, da lahko ime ene spremenljivke dobimo iz vrednosti druge spremenljivke. Ta možnost obstaja, vendar jo uporabljamo previdno, saj lahko poslabša preglednost kode.
<?php
$imeSpremenljivke = "uporabnik";
$$imeSpremenljivke = "Simon";
echo $uporabnik;
?>
V tem primeru ima spremenljivka $imeSpremenljivke vrednost "uporabnik", zato zapis $$imeSpremenljivke pomeni spremenljivko $uporabnik.
Prirejanje in sklicevanje
Če eni spremenljivki priredimo vrednost druge, se vrednost kopira.
<?php
$spremenljivka = 42;
$novaSpremenljivka = $spremenljivka;
$spremenljivka = 325;
echo $novaSpremenljivka;
?>
Če pa uporabimo operator &, ustvarimo sklic oziroma referenco.
<?php
$spremenljivka = 42;
$novaSpremenljivka = &$spremenljivka;
$spremenljivka = 325;
echo $novaSpremenljivka;
?>
V prvem primeru se vrednost kopira, zato poznejša sprememba prve spremenljivke ne vpliva na drugo. V drugem primeru pa sta spremenljivki povezani z referenco, zato sprememba ene vpliva tudi na drugo.
Podatkovni tipi
PHP podpira več različnih podatkovnih tipov. Nekateri najpogostejši so prikazani v tabeli:
| Tip | Primer vrednosti | Opis |
|---|---|---|
int |
5 |
celo število |
float |
3.213 |
decimalno število |
string |
"Pozdravljen!" |
niz znakov |
bool |
true |
logična vrednost |
array |
[1, 2, 3] |
polje |
object |
nov objekt | objekt |
null |
null |
brez vrednosti |
Za preverjanje tipa podatka lahko uporabimo funkcijo gettype(). V sodobnem PHP je za bolj pregleden izpis pri razhroščevanju pogosto uporabna tudi funkcija get_debug_type().
<?php
$test = 5;
echo gettype($test);
?>
Tip podatka lahko spremenimo tudi s funkcijo settype(), vendar je pri sodobnem pisanju kode pogosto pregledneje uporabiti jasno pretvorbo ali že na začetku zapisati pravilno vrednost.
<?php
$vrednost = 3.14;
settype($vrednost, "int");
echo $vrednost;
?>
Pri pretvorbi v celo število se decimalni del odstrani. Pri pretvorbi v logično vrednost pa se vrednosti običajno pretvorijo v true ali false glede na pravila PHP.
Konstante
Spremenljivke omogočajo fleksibilno shranjevanje podatkov, saj lahko njihove vrednosti spreminjamo. PHP omogoča tudi definiranje konstant, torej vrednosti, ki jih po definiciji ne spreminjamo.
Konstanto določimo s funkcijo define() ali z jezikovno konstrukcijo const. Za začetne primere je funkcija define() zelo pregledna.
<?php
define("UPORABNIK", "Miha");
echo "Pozdravljen " . UPORABNIK;
?>
Preddefinirane spremenljivke
PHP vsebuje tudi številne preddefinirane spremenljivke, ki jih pogosto imenujemo superglobalke. Te omogočajo dostop do podatkov o strežniku, zahtevah, obrazcih, piškotkih in datotekah.
$GLOBALS– referenca na globalne spremenljivke$_SERVER– podatki o strežniku in zahtevi$_GET– podatki, poslani z metodo GET$_POST– podatki, poslani z metodo POST$_COOKIE– podatki iz piškotkov$_FILES– datoteke, poslane s obrazcem$_REQUEST– združeni podatki iz GET, POST in COOKIE
Primerjave
Pri učenju spremenljivk je pomembno razlikovati med sorodnimi pojmi.
- Spremenljivka hrani vrednost, ki jo lahko spreminjamo, medtem ko konstanta predstavlja vrednost, ki je po definiciji ne spreminjamo.
- Pri navadnem prirejanju se vrednost kopira, pri referenci pa sta spremenljivki povezani.
- Dinamično tipiziranje pomeni, da tip določimo z vrednostjo, ne pa, da tip podatka ni pomemben.
- Dinamične spremenljivke so mogoče, vendar so navadne spremenljivke praviloma preglednejša izbira.
Pomni: Pri pisanju začetnih programov je skoraj vedno primernejša uporaba navadnih, jasno poimenovanih spremenljivk kot uporaba dinamičnih spremenljivk in referenc.
Priporočila
- Imena spremenljivk naj bodo jasna, kratka in vsebinsko smiselna.
- Za konstante uporabljajmo vrednosti, ki se med izvajanjem programa ne spreminjajo.
- Pri sklicevanju z referencami bodimo previdni, saj lahko povezava med spremenljivkami zmanjša preglednost kode.
- Dinamične spremenljivke uporabljajmo le v posebnih primerih, ko so zares utemeljene.
- Pri preverjanju tipov je priporočljivo poleg izpisa vrednosti preveriti tudi podatkovni tip.
Pogoste napake
- Ime spremenljivke se začne s številko ali vsebuje nedovoljene znake.
- Razlika med velikimi in malimi črkami v imenih spremenljivk ni upoštevana.
- Konstanta in spremenljivka sta obravnavani kot enak pojem, čeprav imata različno vlogo.
- Pri referencah ni upoštevano, da sprememba ene spremenljivke vpliva tudi na drugo.
- Dinamične spremenljivke so uporabljene tam, kjer bi bila navadna spremenljivka preglednejša rešitev.
- Pri pretvorbi tipa se ne upoštevajo pravila PHP, zato rezultat ni pričakovan.
Pozor: Spremenljivke niso le “imena za podatke”, ampak pomemben del zasnove programa. Nejasna imena, nepremišljene reference in zamenjevanje tipov lahko hitro otežijo razumevanje in vzdrževanje kode.