Palavra-Chave 'static'

Declarar membros ou métodos de uma classe como estáticos faz deles acessíveis sem precisar instanciar a classe. Um membro declarados como estático não pode ser acessado com um objeto instanciado da classe (embora métodos estáticos podem).

A declara�o static deve estar depois da declara�o de visibilidade. Por compatibilidade com o PHP 4, se nenhum declara�o de visibilidade for usada, ent� o membro ou m�odo ser�tratado como se fosse declarado como public static.

Como m�odos est�icos podem ser chamados sem uma inst�cia do objeto ter sido criada, a pseudo-vari�el $this n� �dispon�el dentro do m�odo declarado como est�ico.

De fato, chamadas a m�odos est�icos s� resolvidas em tempo de compila�o. Quando usando um nome de classe expl�ito o m�odo j��identificado completamente e nenhuma das regras de heran� se aplicam. Se a chamada for feita por self ent� self �traduzido para a classe atual, isso � a classe �qual o c�igo pertence. Aqui tamb� n� se aplicam as regras de heran�.

Propriedades est�icas n� podem ser acessadas pelo objeto usando o operador seta ->.

Chamar m�odos n� est�icos de maneira est�ica gera um aviso de n�el E_STRICT.

Exemplo 19-14. Exemplo de membro est�ico

<?php
class Foo
{
    
public static $meu_estatico = 'foo';

    
public function valorEstatico() {
        return
self::$meu_estatico;
    }
}

class
Bar extends Foo
{
    
public function fooEstatico() {
        return
parent::$meu_estatico;
    }
}


print
Foo::$meu_estatico . "\n";

$foo = new Foo();
print
$foo->valorEstatico() . "\n";
print
$foo->$meu_estatico . "\n";      // "Propriedade" Indefinida $meu_estatico

// $foo::$meu_estatico n� �poss�el

print Bar::$meu_estatico . "\n";
$bar = new Bar();
print
$bar->fooEstatico() . "\n";
?>

Exemplo 19-15. Exemplo de m�odo est�ico

<?php
class Foo {
  
public static function umMetodoEstatico() {
    
// ...
  
}
}

Foo::umMetodoEstatico();
?>