Implementações de Singleton têm aos milhares por aí e uma das mais simples é essa:
public static function init() { if ( NULL === self :: $instance ) { self :: $instance = new self(); } return self :: $instance; }Perfeito.
Daí eu fui retomar um arquivo aqui só para não perder o costume e percebi que eu estava usando Singleton de um lado e instância"comuns" (com new) de outro.
Não que não funcionasse, mas que queria tentar de outro jeito.
Tirando as verificações eu fazia:
$var = new $_GET['var'];Onde o nome da classe passa pela URL em querystring.
Daí, fui passar para Singleton por pura
Adicionei aquele bloco na classe (que o nome passou por GET) e troquei a linha acima por:
$var = $_GET['var'] :: init();E resulta parse error. Se eu tiro a variável e passo a palavra que passa por GET diretamente, funciona.
Pergunta: Essa implementação de Singleton não permite usar variáveis para obter a instância?
Se não, como faço então?