+3

O Design Pattern Singleton, na prática

criado por Alex Weber em 01/06/2009 11:39pm
Mas é claro!

Existem algumas maneiras de contornar isto como por exemplo usar o método mágico __sleep() para armazenar a variável estática em outra variável que não seja estática ou mesmo especificar explicitamente que ela seja armazenada.

Porém, a mais elegante é simplesmente adicionar este método à classe:
	// ao "acordar" e ser deserializada, armazene a instancia da classe na variável estática
	public function __wakeup()
	{
		self::$instance = $this;
	}

Agora tente dar alguns refresh! Opa... deu certo!

Resumo

Realmente não sei do valor desta solução na prática pois é um caso muito específico e realmente o meu estudo deste caso foi puramente por curiosidade.

Para quem não conhecia, agora conhece o Singleton e também, de quebra, vimos de breve a questão de alguns métodos mágicos como __clone(), __sleep() e __wakeup() além do comportamento de objetos armazenados em sessões!

Aliás, se quiserem ficaria feliz escrever um artigo sobre os outros métodos mágicos do PHP e as suas diversas utilizações!

Espero que este artigo tenha sido interessante para vocês!

Abs,

Alex

OBS - Os arquivos (com a implementação da solução comm _sleep) podem ser baixadas aqui: http://www.alexweber.com.br/phpbrasil_singleton.zip

Comentários:

Mostrando 1 - 1 de 1 comentários
Show de bola cara!

Parabéns!
31/01/2011 2:45pm (~7 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)