Mapeamento dinâmico de dados em PHP
Publicado por Isaque Vieira de Sousa Alves (última atualização em 20/01/2010)
[ Hits: 8.197 ]
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. } } ?>
Atualizando o Passado: Linux no Lenovo G460 em 2025
aaPanel - Um Painel de Hospedagem Gratuito e Poderoso
O macete do Warsaw no Linux Mint e cia
Um modo leve de ouvir/ver áudio/vídeo da internet em máquinas pererecas
Resolver algumas mensagens de erro do SSH
Instalar módulo de segurança do Banco do Brasil Warsaw do tipo .run
Sem espaço na partição home (1)
O que você está ouvindo agora? [2] (190)
Procrastinação e autossabotagem são problemas muito comuns na sociedad... (5)
warsaw parou de funcionar após atualização do sistema (solução) (10)