Singleton – Aplicando o padrão de projeto Singleton com PHP

Olá pessoal! Hoje falarei de um padrão de projeto chamado SINGLETON, este padrão de projeto que é MMUUUUIIIIITTTTOOOOOO útil para vida de sua aplicação, para reutilização de suas instâncias e dentre outras vantagens.

Resumindo, Singleton serve para: Definir uma instância única para um determinado objeto.

Tá, mas como faço isso no PHP ?

Ok, vamos para um pouco de código para que tudo fique mais claro. Vocês verão como é simples adotar este padrão de projeto no PHP:

Aqui, nós criamos uma classe chamada Exemplo, onde é assinado 4 métodos:

  • __construct (Construtor privado) – esse método é para evitar que essa classe seja instanciada de forma direta, ou seja, somente o método estático “getInstance” poderá instanciar esta classe;
  • getInstance – é o método que será responsável de verificar se esta instância já foi feita anteriormente em algum parte do ciclo de vida da aplicação. Caso ele já tenha sido criado retornará o próprio objeto, caso contrário, aí sim ele criará uma instância e armazenará no atributo “$instance”. (Você pode colocar qualquer nome neste método =D);
  • setTexto – este método simplesmente irá popular o atributo “texto”, para que a gente realize um pequeno teste;
  • getTexto: este método simplesmente irá retornar o valor atual do atributo “texto”;

Muito legal e tudo, mas como eu uso esse treco ?

Se preparem para horas e horas de leitura de códigos, pois esta parte é muito extensa e cansativa:

RRRÁÁÁÁ, pegadinha do malandro ! ié ié…  =P

Isso mesmo, neste código acima a variável $exemplo1 instancia a classe Exemplo (new Exemplo), já a variável $exemplo2 utiliza da mesma instância $exemplo1 fazendo com que ambas desfrutem dos recursos do mesmo objeto.

Se você tiver 1.453 variáveis que chamem o métodos getInstance() da classe Exemplo todas elas utilizarão os recursos de um mesmo objeto.

Você pode compor a sua classe com “n” métodos que você achar necessário e fazer a chamada normalmente, como:

Nossa!!! Muito legal e muito fácil de usar! Mas em que situações eu utilizarei esse padrão de projeto?

Ótima pergunta jovem guerreiro padawan! Este padrão de projeto pode ser utilizado para garantir uma única instância para conexão com a base de dados da sua aplicação (inclusive a maioria dos frameworks PHP mais populares utiliza para este propósito e para muitos outros), e como você já sabe o conceito e como utilizar, se você achar pertinente ter que utilizar uma instância só para uma e suas classes, nem pense duas vezes.

Bom, é isso pessoal! Espero que vocês tenham gostado do artigo e qualquer dúvida é só comentar no post que atenderei assim que possível.

Forte abraço e bons Estudos!

Kilderson Sena

Empreendedor, Experiente Analista e Desenvolvedor de Sistema e Líder de Equipes. Micro Empresário no ramo de Tecnologia, mas precisamente nos mercados de Desenvolvimento WEB, Desktop e Mobile.

Deixe uma resposta

This site uses Akismet to reduce spam. Learn how your comment data is processed.