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

# 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(); ?>`

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