Opozorilo |
Naslednje je veljavno samo v PHP 4. |
Včasih je uporabno uporabljati funkcije in sprememnljivke v osnovnem razredu ali uporabljati funkcije v razredih, ki se nimajo instance. Za to uporabljamo :: operator.
class A |
Zgornji primer kliče funkcijo expample() v razredu A, ampak objekt razreda A ne obstaja, torej ne moremo napisati $a->example() ali podobno. Namesto tega, kličemo funkcijo example() kot 'razredno funkcijo', torej kot funkcijo samega razreda in ne objekta tega razreda.
Obstajajo razredne funkcije, a ne obstajajo razredne spremenljivke. Dejstvo je, da med klicom objekta ni. Torej razredna funkcija ne sme uporabljati objektnih spremenljivk (lahko uporablja lokalne in globalne spremenljivke) in seveda ne sme uporabljati $this.
V zgornjem primeru, razred B redefinira funkcijo example(). Originalna definicija v razredu A je uničena in ni več na voljo, razen če specificirate implementacijo funkcije example() v razredu A z operatorjem ::. Napišite A::example() da to naredite (pravzaprav bi morali pisati parent::example(), kot je prikazano v naslednjem primeru).
V tem kontekstu, obstaja trenutni objekt in ima lahko objektne spremenljivke. Torej, ko je uporabljen ZNOTRAJ objektne funkcije, lahko uporabimo $this in objektne spremenljivke.