Manual do PHP
Anterior | Capítulo 19. Classes e Objetos (PHP 5) | Próxima

# Palavra-Chave 'static'

Declarando membros ou métodos de uma classe como estáticos, faz eles "chamáveis" de fora do contexto do objeto. Um membro ou método declarado com static não pode ser acessado com uma variável que é uma instância do objeto e não pode ser redefinido em uma subclasse.

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 o membro ou método será tratado como se fosse declarado como public static.

Como métodos estáticos podem ser chamados sem uma instância do objeto ter sido criada, a pseudo-variável $this não é disponível dentro do método declarado como estático.

De fato, chamadas a métodos estáticos são resolvidas em tempo de compilação. Quando usando um nome de classe explícito o método já é identificado completamente e nenhuma das regras de herança se aplicam. Se a chamada for feita por self então self é traduzido para a classe atual, isso é, a classe à qual o código pertence. Aqui também não se aplicam as regras de herança.

Propriedades estáticas não podem ser acessadas pelo objeto usando o operador seta ->.

Exemplo 19-13. Exemplo de membro estático
`<?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ão é possível print Bar::$meu_estatico . "\n"; $bar = new Bar(); print $bar->fooEstatico() . "\n"; ?>`

Exemplo 19-14. Exemplo de método estático
`<?php class Foo { public static function umMetodoEstatico() { // ... } } Foo::umMetodoEstatico(); ?>`

Anterior | Principal | Próxima
Operador de Resolução de Escopo (::) | Acima | Constantes do Objeto