Singleton como padronização

Agosto 20, 2008 on 12:13 pm | In Informatica, php, Tutorial | 1 Comment

Apesar de Singleton ser utilizado como um Design Pattern ele é muito mais padrão ou uma metodologia a ser usada em qualquer linguagem para podermos criar instância única e mantelá como centro global de todo o objeto. Simplificando para phpnês, é uma instância única que será usada em comum por todo o projeto/sistema.

Imaginamos que você tenha a classe que acessa o banco de dados e neste caso do sistema somente irá necessitar de uso de um unico banco de dados; porque deveriamos instanciar uma nova classe de acesso ao banco se podemos utilizar sempre o mesmo acesso com a mesma conexão? É isso que o singleton permite você fazer, utilizar uma instância única e compartilhar ela com o sistema todo.

Vamos ao código (php4):

PHP:
  1. <span class="kw2" />class singleton{
  2.  
  3. var $Numero;
  4.  
  5. function singleton{
  6. $this->Numero = rand();
  7. }
  8.  
  9. function &getInstance(){
  10. static $instance;
  11.  
  12. if (!$instance){
  13. $instance = array( new singleton() );
  14. }
  15. return $instance[0];
  16. }
  17.  
  18. function showNumber(){
  19. echo 'Usando singleton = '. $this->Numero.'
  20. ';
  21. }
  22. }
  23.  
  24. $a = singleton::getInstance();
  25. $a->showNumber();
  26.  
  27. unset($a);
  28.  
  29. $a = singleton::getInstance();
  30. $a->showNumber();

No php5:

PHP:
  1. class singleton{
  2.  
  3. static private $instance = null;
  4. private function __construct(){
  5. }
  6.  
  7. static public function getInstance(){
  8. if (self::$instance == null){
  9. self::$instance = new singleton();
  10. }
  11. return self::$instance;
  12. }
  13. }
  14.  
  15. $obj = singleton::getInstance();

Simples né ? Faça alguns testes usando conexões diferentes, navegadores diferentes, em diferentes páginas e sistemas, até a próxima.


Diferenças entre datas em PHP

Agosto 13, 2008 on 12:39 pm | In Informatica, php, Tutorial | 1 Comment

Bom vou escrever um tutorial simples para escrever uma função que vai calcular a diferença entre duas datas e retornar a diferença em semanas, dias, horas, minutos e segundos. Vamos lá.

Primeiramente a menira mais simples de fazer essa diferença é trabalhar com a data em padrão Unix Timestamp, mas o que é isso ?! Unix Timestamp nada mais é que a nossa data passada para segundos. Então com essa idéia, a diferença entre as duas datas será também em segundo, o que precisamos é converter para saber quantas horas/dias/minutos... enfim, vamos a função bem comentada:

PHP:
  1. function data_diff($data, $data1 = 0){
  2.  
  3. // mktime() retorna UNIX STIMESTAMP atual
  4. if(!$date1)
  5. $date1 = mktime();
  6.  
  7. $diferenca = array('segundos'  => '','minutos'  => '','horas'    => '','dias'     => '','semanas'    => '');
  8.  
  9. if($date1> $date)
  10. $tmp = $date1 - $date;
  11. else
  12. $tmp = $date - $date1;
  13. // Após a conta acima teremos o restando em segundos (unix timestamp)
  14. // Bastando as contas para preencher nossa array e retonar separados os restantes
  15.  
  16. // Calculo de semanas apartir do numero de segundos começando do maior para o menor, pois cada valor calculado é retirado a porção
  17. // Exemplo se achou 3 semanas é retirado (3 * 604800) para que quando calcular dias so estejam os segundos referentes aos dias e assim por diante
  18. $diferenca['semanas'] = floor($tmp/604800);
  19. $tmp -= $diferenca['semanas'] * 604800;
  20.  
  21. $diferenca['dias'] = floor($tmp/86400);
  22. $tmp -= $diferenca['dias'] * 86400;
  23.  
  24. $diferenca['horas'] = floor($tmp/3600);
  25. $tmp -= $diferenca['horas'] * 3600;
  26.  
  27. $diferenca['minutos'] = floor($tmp/60);
  28. $tmp -= $diferenca['minutos'] * 60;
  29.  
  30. $diferenca['segundos'] = $tmp;
  31.  
  32. return $diferenca;
  33. }

Caso você tenha a data no formato que for, utilize a função mktime do PHP para transformar a data em unix timestamp, antes de enviar para a função.


CONAPHP 2008

Agosto 4, 2008 on 4:30 pm | In Informatica, php | 1 Comment

Você vai ?! Eu quero ir. CONAPHP é o evento chamado "Congresso Nacional de PHP", que irá ocorrer em São Paulo nos dias 18/10 e 19/10 de 2008 na FIAP - Faculdade de Informática e Administração Paulista no seguinte endereço Av. Lins de Vasconcelos, 1264. O que eu não sei exatamente como chegar, porém dizem ser perto do metrô Vila Mariana. Irei falar um pouco do evento.

O evento CONAPHP é um evento organizado pela comunidade PHP, organizado de forma totalmente independente como acontecido em diversos países pelo mundo. A idéia é distinguir eventos da comunidade por outros organizados por diversas entidades, por isso a importancia do nome CONAPHP.

A princípio teremos 2 palestrantes internacionais e alguns brasileiros, foram até então divulgados os palestrantes internacionais, sendo o criador do Smarty, PHP-GTK e dentro outros importantes projetos Andrei Zmievski e o César Rodas um paraguaio envolvido em diversos projetos de nome, como o PHPClasses.org, WordPress e Google Summer of Code, a lista de palestrantes Brasileiros ainda não foi divulgada, estão sendo selecionados, caso você queria palestrar so entrar em contato com a organização pelo site do CONAPHP.



 

 Assine o feed