O Design Pattern Singleton, na prática
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:
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
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
Parabéns!