Mapeamento dinâmico de dados em PHP
Publicado por Isaque Vieira de Sousa Alves (última atualização em 20/01/2010)
[ Hits: 8.062 ]
Homepage: www.isaquealves.com
Download 1263483399.Map.php (versão 2)
Criei esta classe para simplificar meu trabalho na hora de guardar registros de documentos de usuários cadastrados em um sistema online.
O uso é simples e fácil. Eu o uso como uma superclasse para outras classes.
class Documents extends Map {
...
}
A parte de validação dos documentos é independente da classe, e a forma de armazenamento também. Fica fácil usar serialização assim.
Versão 2 - Enviado por Isaque Vieira de Sousa Alves em 14/01/2010
Changelog: Alteração em alguns métodos para correção de comportamento inadequado.
Método __set: Insere uma nova chave e faz uma atribuição consequente.
Método put: Faz uma atribuição à chave informada com o valor, ambos passados como argumento.
Método remove: Executa a função unset do PHP sobre a chave passada como argumento.
<?php /* * Map.php */ /** * Map * Classe que possibilita a criação de um mapa semelhante aos gerados pela classe java.util.Map. * Possui os métodos put, get, replaceKeyValue, remove. * * @author Isaque Alves <isaquealves + gmail . com> */ class Map { private $_mapStructrure; /** * Construtor da Classe */ public function __construct($defStructure = null) { if($defStructure != null) $this->_mapStructrure = $defStructure; else $this->_mapStructrure = array(); } /** * * @param mixed $key * @param mixed $value */ public function __set($key, $value) { array_push($this->_mapStructrure,$key); if(array_key_exists($key, $this->_mapStructrure)) { $this->_mapStructrure[$key] = $value; } } /** * * @param mixed $var * @return mixed */ public function __get($var) { if(isset($this->_mapStructrure[$var])) { return $this->_mapStructrure[$var]; } elseif(method_exists($this, $var)) { return $this->var(); } else { throw new Exception("Esta propriedade ($var) nao existe em objetos deste tipo : " . __CLASS__); } } /** * * @param mixed $key * @param mixed $value */ public function put($key, $value) { array_push($this->_mapStructrure,$key); if(array_key_exists($key, $this->_mapStructrure)) { $this->_mapStructrure[$key] = $value; } } /** * * @return array */ public function getAllStoredData() { return $this->_mapStructrure; } /** * * @param mixed $key * @return mixed */ public function get($key) { if(array_key_exists($key, $this->_mapStructrure)) return $this->_mapStructrure[$key]; else throw new Exception("Este mapa nao contem nenhuma chave com o nome $var : "); } /** * * @param mixed $key * @param mixed $newValue */ public function replaceKeyValue($key,$newValue) { if(array_key_exists($key, $this->_mapStructrure)) { $this->_mapStructrure[$key] = $newValue; } } /** * * @param mixed $key */ public function remove($key) { $this->_mapStructrure[$key] = null;//torna nulo o valor da chave a ser removida $tmpArray1 = array(); for($i=0; $i < array_count_values($this->_mapStructrure); $i++) { if($this->_mapStructrure[$key] != null) { array_push($tmpArray1,$this->_mapStructrure[$key]); // para toda chave cujo valor seja não-nulo, adicione-a a um array temporário } } $this->_mapStructrure = $tmpArray1; // atualize a referencia. } } ?>
Receber atualização de encomendas do correios em seu e-mail
Cron - Classe PHP para cálculo da diferença entre duas datas
Previsão do tempo para Porto Alegre/RS
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (15)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)
Pendrive não formata de jeito nenhum (4)