::

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
{
    function example()
    {
        echo "Jaz sem funkcija A::example().<br>\n";
    }
}

class B extends A
{
    function example()
    {
        echo "Jaz sem redefinirana funkcija B::example().<br>\n";
        A::example();
    }
}

// objekt razreda A ne obstaja.
// Izpis
//   Jaz sem funkcija  A::example().<br>
A::example();

// naredimo objekt razreda B.
$b = new B;

// izpis
//   Jaz sem redefinirana funkcija B::example().<br>
//   Jaz sem funkcija  A::example().<br>
$b->example();

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.