Isto é válido somente para o PHP 4 e versões posteriores.
Algumas vezes é útil se referir a funções e variáveis declarados na classe base, ou se referir a funções em classes que ainda não possuem instâncias. O operador :: é utilizado para isso.
<?php
class A {
function example() {
echo "Eu sou o método original A::example().<br />\n";
}
}
class B extends A {
function example() {
echo "Eu sou o método redefinido B::example().<br />\n";
A::example();
}
}
// Não existe um objeto da classe A mas ainda sim o método
// será executado e imprimirá
// Eu sou o método original A::example().<br />
A::example();
// Criando um objeto da classe B.
$b = new B;
// Isto irá imprimir
// Eu sou o método redefinido B::example().<br />
// Eu sou o método original A::example().<br />
$b->example();
?>
O exemplo acima chama o método example() presente na classe A, mas não existe um objeto instanciado da classe A, desse modo nós não podemos escrever $a->example(). Ao invés disso chamamos example() como uma 'função de classe', ou seja, como uma função da própria classe e não de algum objeto (instância) da classe.
Existem 'funções de classe' mas não existem 'variáveis de classe'. De fato, não existe nenhum objeto no momento da chamada. Assim, a 'função de classe' não pode utilizar-se de nenhuma das variáveis (propriedades) da classe (mas pode utilizar-se variáveis locais ou globais) e não pode possuir chamadas utilizando $this.
No exemplo acima, a classe B redefine a função example(). A definição original presente na classe A é sobrescrita e não está mais disponível, a não ser que você se refira explicitamente à implementação de example() na classe A utilizando o operador ::. Escreva A::example() para fazer isto (de fato, você poderia utilizar parent::example(), como demonstrado na seção seguinte).
Neste contexto, existe um objeto corrente e este pode possuir variáveis. Assim, quando utilizado dentro de um método de um objeto, você pode utilizar $this bem como as variáveis de objeto.