Aprenda a criar um singleton em PHP corretamente

Veja como criar um singleton em PHP para controlar a criação de instâncias e garantir um único ponto de acesso.

Como criar um singleton em PHP?

O padrão Singleton é um dos padrões de projeto mais utilizados em PHP. Ele garante que uma classe tenha apenas uma única instância e fornece um ponto global de acesso a essa instância.

Implementação de um Singleton

<?php
class ConexaoBanco {
    private static $instancia;
    private function __construct() {
        echo "Conexão com o banco de dados estabelecida!\n";
    }

    public static function getInstancia() {
        if (self::$instancia === null) {
            self::$instancia = new self();
        }
        return self::$instancia;
    }
}

$conexao1 = ConexaoBanco::getInstancia();
$conexao2 = ConexaoBanco::getInstancia();

var_dump($conexao1 === $conexao2); // true
?>

Explicação do Código

  • O construtor é privado, impedindo que a classe seja instanciada diretamente.
  • Criamos um método estático getInstancia(), que verifica se a instância já existe e a retorna.
  • Se a instância não existir, ela é criada e armazenada em self::$instancia.
  • var_dump($conexao1 === $conexao2); retorna true, garantindo que ambas as variáveis referenciam o mesmo objeto.

O padrão Singleton é muito utilizado em conexões com banco de dados, serviços globais e gerenciamento de configurações. Ele evita a criação desnecessária de múltiplas instâncias da mesma classe, economizando memória e melhorando a eficiência da aplicação.

Algumas aplicações:

  • Gerenciamento de conexões com banco de dados
  • Configuração global da aplicação
  • Armazenamento de estados compartilhados
  • Controle de instâncias em aplicações grandes

Dicas para quem está começando

  • Use Singleton apenas quando necessário para evitar limitações desnecessárias.
  • Mantenha o construtor privado para impedir múltiplas instâncias.
  • Utilize um método estático para obter a instância única.
  • Teste o padrão Singleton aplicando-o a classes de banco de dados ou logs.
  • Evite armazenar muitas responsabilidades dentro de uma classe Singleton.

Contribuições de Daniel Moreira

Compartilhe este tutorial: Como criar um singleton em PHP?

Compartilhe este tutorial

Continue aprendendo:

Como definir e aplicar design patterns em PHP?

Veja como os design patterns podem ajudar a organizar e estruturar melhor o código PHP para maior reutilização e escalabilidade.

Tutorial anterior

Como implementar o padrão Factory no PHP?

Veja como utilizar o padrão Factory em PHP para instanciar objetos sem expor a lógica de criação diretamente.

Próximo tutorial