Pelo que entendi o Padrão de Projeto Singleton é usado para garantir que haja apenas uma instância de um objeto? Está correto? Como o PHP encerra a sessão ao término da leitura dos scripts da página, não seria meio em vão usar o Singleton? Ou estou falando bobagem? Só sei dizer que deu um nó em minha cabeça…
Também acredito que o Singleton no PHP é um pouco polêmico, a princípio serve mais para organização mesmo, pois na prática a instância será recriada a cada requisição.
Em PHP, acredito que uma boa utilização do pattern Singleton seria para conexão com banco, quando em uma execução você possui vários métodos invocando o banco de dados. Por exemplo:
Veja um fluxo do método criarVenda, ele possui chamadas a métodos de outras classes que também fazem conexão com banco. Usando Singleton não seria necessário abrir uma conexão a cada invocação de método.
class VendaService {
public function criarVenda(Venda $venda) {
$cliente = $venda->getClient();
$clienteService = new ClienteService();
$cliente = $clienteService->savlarOuAtualizar($cliente);
$dbSinglegon = DbSigleton.getInstance();
$dbSinglegon->insert($venda);
$estoque = new EstoqueService();
$estoque->atualizarEstoque($venda);
}
}
Para manter em memória é interessante usar o padrão Registry com alguma abordagem de serializar a classe e manter em cache.