Pri pisanju PHP kode se vsakodnevno srečuješ z besedami, kot so if, else,
for ali function. Te besede imenujemo ključne besede (ang.
keywords) ali rezervirane besede. Ker predstavljajo osnove same slovnice jezika PHP in interpretatorju
povedo, kako naj krmili logiko programa, imajo vnaprej določen, strogo sistemski pomen. V spodnjem interaktivnem
simulatorju si lahko ogledaš nekaj najpogostejših primerov njihove uporabe v praksi, nato pa si bomo pogledali,
zakaj s temi besedami ne smeš poimenovati svojih spremenljivk.
Preden si ogledamo celoten seznam, je pomembno razumeti, zakaj so te besede sploh posebne. Predstavljaj si
ključne besede kot "prometne znake" v jeziku PHP. Ko PHP interpretator bere tvojo kodo in naleti
na besedo, kot je if, class ali function, natančno ve, da mora v tistem
trenutku zagnati specifično sistemsko logiko (npr. preveriti pogoj, ustvariti objekt ali pripraviti funkcijo).
Ker imajo te besede vgrajen globok in vnaprej določen pomen, PHP ne dovoljuje, da bi jih uporabljal za svoja lastna poimenovanja. Če poenostavimo: ključnih besed ne smeš uporabiti kot imena za svoje spremenljivke, funkcije, razrede ali konstante.
$new = "nov podatek"; // NAPAKA! 'new' je ključna beseda za ustvarjanje objektov.
$function = 5; // NAPAKA! 'function' je rezervirana za deklaracijo funkcij.
Če boš poskusil zagnati takšno kodo, se bo
izvajanje takoj ustavilo s kritično napako: Parse error: syntax error, unexpected '$'.
Zanimivo pa je, da v PHP-ju ključne besede (za razliko od spremenljivk) niso občutljive na velike in male
črke. To pomeni, da so echo, ECHO in eChO za PHP popolnoma enaka
stvar, čeprav se v praksi zaradi preglednosti vedno pišejo izključno z malimi črkami.
Spodaj je zbran celoten seznam rezerviranih besed, ki jih PHP uporablja za krmiljenje svoje notranje logike. Razdeljene so glede na njihov glavni namen, kar ti bo pomagalo hitreje usvojiti njihovo vlogo v programiranju:
| Ključna beseda | Opis in pomen |
|---|---|
abstract |
Deklaracija abstraktnega razreda ali metode, ki nima implementacije. |
and |
Logični operater "in" (nižja prioriteta kot &&). |
array |
Konstrukt za kreiranje polja ali tipizacijo podatkovne strukture. |
as |
Dodelitev vzdevka v foreach zanki ali pri uporabi imenskih prostorov. |
break |
Takojšnja prekinitev izvajanja zanke (for, while, foreach)
ali switch bloka. |
case |
Preverjanje specifične vrednosti znotraj switch strukture. |
catch |
Blok kode, ki se izvede, če je v try bloku prišlo do izjeme. |
class |
Ključna beseda za definicijo razreda (objektno programiranje). |
const |
Definicija konstante na nivoju razreda ali globalno. |
continue |
Preskok preostanka trenutne iteracije in nadaljevanje na naslednjo. |
declare |
Nastavitev direktiv za izvajanje kode (npr. strict_types=1). |
default |
Rezervna možnost v switch stavku, če nobena vrednost case ne
ustreza. |
do |
Začetek do-while zanke, ki se izvede vsaj enksat. |
else |
Blok kode, ki se izvede, če je pogoj v if stavku napačen. |
elseif |
Dodaten pogojni stavek znotraj if strukture. |
enddeclare |
Alternativna sintaksa za konec declare bloka. |
endfor |
Alternativna sintaksa za konec for zanke. |
endforeach |
Alternativna sintaksa za konec foreach zanke. |
endif |
Alternativna sintaksa za konec if stavka. |
endswitch |
Alternativna sintaksa za konec switch bloka. |
endwhile |
Alternativna sintaksa za konec while zanke. |
extends |
Označuje dedovanje: razred prevzame lastnosti starševskega razreda. |
final |
Prepreči dedovanje razreda ali preglasitev metode. |
finally |
Blok v try-catch strukturi, ki se izvede vedno (ne glede na napako). |
for |
Klasična številčna zanka. |
foreach |
Zanka, specializirana za prehajanje čez elemente polja (array). |
function |
Deklaracija uporabniške funkcije ali anonimne funkcije. |
global |
Omogoča dostop do globalne spremenljivke znotraj lokalnega dosega funkcije. |
goto |
Skok na določeno oznako (label) v kodi (uporabljati previdno). |
if |
Osnovni pogojni stavek. |
implements |
Uporaba vmesnika (interface) v razredu. |
include |
Vključitev zunanje datoteke (izpiše Warning, če datoteke ni). |
include_once |
Vključitev datoteke le enkrat v celotnem ciklu skripte. |
instanceof |
Preverjanje, ali je določen objekt instanca določenega razreda. |
interface |
Definicija vmesnika, ki določa, katere metode mora razred implementirati. |
namespace |
Organizacija kode v logične skupine (imenski prostori). |
new |
Ustvarjanje nove instance (objekta) razreda. |
or |
Logični operater "ali" (nižja prioriteta kot ||). |
private |
Zasebna vidljivost: dostop le znotraj istega razreda. |
protected |
Zaščitena vidljivost: dostop znotraj razreda in izvedenih razredov. |
public |
Javna vidljivost: dostop od koderkoli. |
require |
Obvezna vključitev datoteke (Fatal Error, če datoteke ni). |
require_once |
Obvezna vključitev datoteke le enkrat. |
return |
Vračanje vrednosti iz funkcije in prekinitev njenega izvajanja. |
static |
Definicija statičnih metod/lastnosti ali statičnih spremenljivk v funkcijah. |
switch |
Struktura za večkratno preverjanje vrednosti ene spremenljivke. |
throw |
Ročno proženje (metanje) izjeme (exception). |
trait |
Skupina metod, ki jih lahko vključimo v več različnih razredov. |
try |
Začetek bloka za prestrezanje morebitnih napak. |
use |
Uporaba imenskih prostorov ali vključevanje sledi v razred. |
var |
Zastarela oblika za public (uporabljeno v PHP 4). |
while |
Zanka, ki teče, dokler je pogoj izpolnjen. |
xor |
Logični "izključni ali" (resnično, če je natanko eden od pogojev resničen). |
Začetniki se pogosto sprašujejo, kam te besede sploh spadajo. Ključne besede niso navadne funkcije, ki bi jih lahko poljubno klicali kjerkoli. So osnovni gradniki strukture. Glede na to, kje v kodi živijo in kakšna je njihova vloga, jih lahko razdelimo v 4 glavne skupine:
Te besede pišemo neposredno v glavni potek skripte, ko želimo usmerjati delovanje programa in preverjati pogoje.
Okoli njih običajno pišemo okrogle () in zavite {} oklepaje.
// Primer uporabe pogojev in zank neposredno v kodi:
if ($ura < 12) {
echo 'Dobro jutro!';
}
switch ($barva) {
case 'rdeča':
echo 'Stop!';
break;
}
Te besede se uporabljajo za ustvarjanje oziroma deklaracijo povsem novih struktur v tvoji aplikaciji. Največkrat stojijo na samem začetku vrstice in interpretatorju javljajo, kaj natančno sledi.
// Uporaba na začetku vrstice za definicijo struktur:
abstract class OsnovnaBaza {
// koda razreda
}
class MojaBaza extends OsnovnaBaza {
// koda, ki deduje lastnosti
}
function sestej($a, $b) {
return $a + $b;
}
Te besede so strogo omejene in živijo izključno znotraj zavitih oklepajev nekega razreda (objektno programiranje). Z njimi določamo varnost oziroma od kod se lahko določeni podatki pokličejo.
class Uporabnik {
// Vpisujemo znotraj razreda pred spremenljivke in metode:
private $geslo;
public $ime;
public static function izpisiPodatke() {
// statična metoda
}
}
Te besede se obnašajo kot računski znaki ali orodja za delo s podatki. Vpisujemo jih neposredno med spremenljivke, desno od enačaja ali neposredno pred imena razredov.
// Delujejo kot operaterji med podatki:
if ($pogoj_A xor $pogoj_B) {
// Logični izključni ALI med dvema pogojema
}
$avto = new Avto(); // 'new' stoji med spremenljivko in razredom
if ($avto instanceof Avto) {
// Preverjanje tipa objekta
}
S poznavanjem teh štirih skupin boš veliko lažje razumel zgornjo celotno tabelo in takoj vedel, v kateri del kode paše posamezna ključna beseda!