Класове и обекти (PHP 4)
PHP Manual

Оператор за област на действие (::)

Внимание

Следното е валидно само за PHP 4 и по-нови версии.

Понякога е полезно да се обръщаме към функции и променливи от базовите класове или да се обръщаме към функции, които все още нямат инстанции. В тези случаи се използва оператора ::.

<?php
class {
    function 
example() {
        echo 
"Аз съм оригиналната функция A::example().<br />\n";
    }
}

class 
extends {
    function 
example() {
        echo 
"Аз съм повторно-дефинираната функция B::example().<br />\n";
        
A::example();
    }
}

// няма обект от клас A.
// това ще изведе
//   Аз съм оригиналната функция A::example().<br />
A::example();

// създаване на обект от клас B.
$b = new B;

// това ще изведе
//   Аз съм повторно-дефинираната функция B::example().<br />
//   Аз съм оригиналната функция A::example().<br />
$b->example();
?>

В горния пример се извиква функция example() на клас A, без да е създаден обект от клас A, така че няма как да се напише $a->example() или нещо подобно. Вместо това example() се извиква като функция на класа, която е функция на самия клас, а не на обект от този клас.

Съществуват функции на класа, но не променливи на класа. В действителност, въобще не съществува обект в момента на извикването. По този начин функцията на класа не може да използва променливи на класа (но може да ползва локални или глобални променливи) и изобщо не може да използва $this.

В горния пример в клас B е дефинирана повторно функцията example(). Първоначалната дефиниция в клас А е препокрита и е недостъпна, освен ако не се обърнете изрично към реализацията на example() в клас A посредством оператора ::. Напишете A::example(), за да направите това (всъщност е по-добре да напишете parent::example(), както е показано в следващия раздел.

В контекста на казаното по-горе, съществува текущ обект и той може да има променливи. По този начин, при извикването от тялото на функция, можете да използвате ключовата дума и променливи на обекта.


Класове и обекти (PHP 4)
PHP Manual