Além de suportar propriedades
estáticas, o PHP também suporta métodos
estáticos, ou seja, definidos com a palavra-chave static.
Métodos estáticos pertencem à classe e
podem ser acessados sem a necessidade de se criar uma instância
da classe. Veja:
<?
// definição da classe Pessoa
class Pessoa{
static function avisar(){
echo "Sou um método estático";
}
}
// chama o método usando o nome da classe
Pessoa::avisar();
?>
Observe como chamamos o método sem criar uma instância
da classe a qual ele pertence. Para isso usamos o nome da classe
e o operador :: seguido pelo nome do método.
Métodos estáticos são úteis quando
você quer montar uma biblioteca de funções
relacionadas. Um exemplo seria uma classe Math
com as funções matemáticas mais usadas
em seus códigos.
É importante ter em mente que métodos estáticos
não têm acesso a outros métodos ou propriedades
não estáticas da classe. Isso é fácil
de entender. Como não existe uma instância da classe,
estes métodos e propriedades não existem. Veja
o que acontece no código a seguir:
<?
// definição da classe Pessoa
class Pessoa{
public $nome;
static function avisar(){
$this->nome = "Alberto";
echo "Sou um método estático";
}
}
// chama o método usando o nome da classe
Pessoa::avisar();
?>
Ao executar este código teremos a seguinte mensagem de
erro:
Fatal error: Using $this
when not in object context in c:\estudos\estudos.php on line
7
Uma saída seria usar self:
self::$nome = "Alberto";
Outra mensagem de erro:
Fatal error: Access
to undeclared static property: Pessoa::$nome in c:\estudos\estudos.php
on line 7
Marque $nome como static e os erros desaparecerão:
Todo o conteúdo deste site,
quando não devidamente observado, pertence a seus idealizadores
e não
poderá ser usado para outras finalidades senão estudo e
aprimoramento de técnicas de programação.
Certifique-se de ler asnotas legaisantes de proceder com
o acesso e leitura do
conteúdo disponibilizado nestas páginas.