sexta-feira, 26 de julho de 2013

Objeto Application ASP em PHP - Classe Application

Os desenvolvedores ASP devem morrer de raiva ao migrar para o PHP, no momento em que precisam utilizar um objeto do tipo Application.

Não tem problema algum, e a resolução é muito simples com uma classe muito simples. Aconselhamos a leitura do post anterior sobre "Persistência de Dados em PHP".

A classe

A classe em PHP tem dois métodos, sem muitas preocupações com as regras ortodoxas de instanciação:

  class Application {
    public function getVar( $varName ){
      $Noip = $_SERVER['REMOTE_ADDR'];
      $rs = "/var/www/chatonline/" . $Noip . ".txt";
      $conteudo = file_get_contents($rs);
      $arr = unserialize($conteudo);
      return $arr[$varName];
      }
    public function setVar( $varName, $valVar ){
      $Noip = $_SERVER['REMOTE_ADDR'];
      $rs = "/var/www/chatonline/" . $Noip . ".txt";
      $conteudo = file_get_contents($rs);
      $arr = unserialize($conteudo);
      if( file_exists($rs) ){
unlink($rs);
}
      $arr[$varName] = $valVar;
      $conteudo = serialize($arr);
      file_put_contents($rs, $conteudo);
      return;
      }
    }

Optamos por utilizar o Número IP do cliente como referencia. No entanto, para maior precisão, para um sistema bem concebido, a referência (nome do arquivo) deverá ser o login do usuário. Portanto, o desenvolvedor deverá ter a preocupação de integrar o seu sistema a um módulo de autenticação já existente, ou desenvolver um módulo para este fim.

Ambos os métodos lêem o número de IP da variável de servidor no índice "REMOTE_ADDR". Este número é concatenado à extensão "txt", compondo o nome do arquivo a ser gravado, e que fará o papel de "cookie" de servidor.

Função setVar

Vamos analisar esta função primeiro, pois ela é que produz a sequência de caracteres com o formato que vamos utilizar.

É lido um arquivo que, de forma objetiva, contém um arranjo gravado, com elementos cujo índice é aquilo que corresponde ao nome da variável Application que queremos armazenar. No post anterior sobre "Persistência de Dados em PHP" explicamos a manipulação do arranjo, sua serialização e desserialização.

Através do conhecido comando file_get_contents() trazemos o $conteudo do jeito como foi gravado por operações anteriores que possam ter acontecido. No entanto, este conteúdo está sob a forma de sequência serializada de caracteres, também explicada no post de Persistência de Dados em PHP. É preciso abrir este formato novamente na forma de arranjo tradicional. Tal operação é feita pelo comando unserialize().

Devido à manipulação de permissões, ao ser criado o arquivo no servidor, posteriormente não existe a possibilidade de leitura. Por isto, logo após a coleta do arranjo, o arquivo de apoio é apagado. O item que corresponde ao elemento do arranjo que armazena a variável de Aplicação é alterado por uma operação de arranjo. Todo o arranjo é novamente serializado, e o comando file_put_contents() é executado, finalizando a operação.

Função getVar

É uma função mais simples que putVar, pois apenas extrai o elemento do arranjo necessário, sem precisar apagar o arquivo com toda a sequência de valores, e sem necessidade de substituir o valor anterior.

Uso da Classe

Esta classe deverá ser incluída na script PHP que for utilizá-la através da instrução PHP include:

Depois é só utilizar seus métodos.

Exemplo 1

Leitura de um elemento, cujo índice é "Fnd":

  include "ClassApp.php";
  $app = new Application();
  echo $app->getVar("Fnd");

Exemplo2

Alteração de um elemento, cujo índice é "Fco", e leitura para conferência:

  include "ClassApp.php";
  $app = new Application();
  echo $app->setVar("Fco", "Franciscópolis Urbanus");
  echo $app->getVar("Fco");

Problemas de acento serão resolvidos com o correto uso das tags META.



Nenhum comentário:

Postar um comentário