Forum und email

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).

Por compatibilidade com o PHP 4, se nenhuma 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.

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

Chamar métodos não estáticos de maneira estática gera um aviso de nível E_STRICT.

No PHP 5.3.0, é possível referenciar a classe usando uma variável. Palavras chaves como self, parent ou static não são permitidos em referências dinâmicas à classes.

Example#1 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

print $foo::$meu_estatico "\n";
$classname 'Foo';
print 
$classname::$meu_estatico "\n";

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

Example#2 Exemplo de método estático

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

Foo::umMetodoEstatico();
$classname 'Foo';
$classname::umMetodoEstatico();
?>