Como uma classe pode ser instanciada mais que uma vez, significa que os valores que contém são únicos para a instância/objecto e não para a classe em si. Significa também que não podemos usar os métodos ou variáveis numa classe sem a instanciar primeiro, mas como sempre há uma excepção à regra. Quer as variáveis quer os métodos das classes podem ser declarados como static ou estáticos (também identidicados como “shared” em algumas linguagens de programação), o que quer dizer que podem ser usados sem instanciar a classe primeiro. Uma vez que assim a variável da classe pode ser acedida sem uma instância específica, significa também que irá existir apenas uma versão desta variável. Outra consequência é que um método estático não pode aceder a variáveis e métodos não estáticos, uma vez que estes requerem uma instância da classe.

Num artigo anterior, criámos a classe Utilizador. Vamos expandir esta classe com algumas funcionalidades estáticas:

 

O que fizémos à classe foi adicionar a variável estática $tamanhoMinimoPass com o valor definido de 6 e de seguida adicionámos a função estática ValidarPassword para verificar se a password é ou não válida. Esta validação de password aqui exemplificada é bastante limitada, mas pode ser expandida. É certo que poderíamos usar uma variável e função normais na classe, mas simplesmente faz mais sentido usá-los como estáticos, pois não se trata de informação específica de um utilizador. Esta funcionalidade é geral, logo não há necessidade de termos de instanciar a classe para os podermos usar.

Como pode ver, para aceder à variável estática através do nosso método estático, usamos o prefixo “self“, que é como o prefixo “this” mas para aceder a membros estáticos e constantes. É óbvio que só funciona dentro da classe, sendo que para chamarmos a função ValidarPassword() de fora da classe, usamos o nome da classe. Verifiquem também que para aceder a membros estáticos sao necessários duplos dois pontos “::” em vez do operador “->“, tirando isso é basicamente a mesma coisa.

Artigo anterior do tutorial PHP:

Classes abstractas em PHP

Artigo seguinte do tutorial PHP:

Keyword final em PHP

Poderá também gostar de:


Tiago Ramalho

Tiago Ramalho é um profissional de Informática interessado em Internet, Programação .NET e PHP e blogging. Nos tempos livres escreve nos interessespessoais.com sobre Jardim, Saúde, Sistemas, utilitários e outros temas relacionados com informática.

More Posts - Website - Twitter - Pinterest - Google Plus

  • 16
  •  
  •  
  •  
  •  
  •  
  •