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);
retornatrue
, garantindo que ambas as variáveis referenciam o mesmo objeto.
Por que utilizar o padrão Singleton no PHP?
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