Junior — Middle
Quais passos adicionais são necessários para a implementação correta do padrão Singleton, além de proibir o construtor público?
sobes.tech IA
Resposta da IA
Para a implementação correta do padrão Singleton em PHP, além de proibir o construtor público, é necessário:
- Tornar o construtor
privateouprotectedpara evitar a criação de instâncias de fora. - Proibir a clonagem do objeto, implementando o método
__clonee tornando-oprivateou lançando uma exceção. - Proibir a desserialização, implementando o método
__wakeupe tornando-oprivateou lançando uma exceção. - Criar um método estático (por exemplo,
getInstance) que crie e retorne a única instância da classe.
Exemplo:
class Singleton {
private static $instance = null;
private function __construct() {
// construtor privado
}
private function __clone() {
// proibir clonagem
throw new \Exception("Cloning is not allowed.");
}
private function __wakeup() {
// proibir desserialização
throw new \Exception("Unserialization is not allowed.");
}
public static function getInstance() {
if (self::$instance === null) {
self::$instance = new self();
}
return self::$instance;
}
}
Isto garante que apenas uma instância da classe seja criada e que ela não possa ser clonada ou restaurada a partir de um estado serializado.