Mapeamento dinâmico de dados em PHP
Publicado por Isaque Vieira de Sousa Alves (última atualização em 20/01/2010)
[ Hits: 8.185 ]
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. } } ?>
Cron - Classe PHP para cálculo da diferença entre duas datas
Cria gráficos para monitoramento de consumo de CPU e Memória a partir de arquivos [Atualização].
FormConstructor: Formulário Construído por Variável
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
Visualizar arquivos em formato markdown (ex.: README.md) pelo terminal
Dando - teoricamente - um gás no Gnome-Shell do Arch Linux
Como instalar o Google Cloud CLI no Ubuntu/Debian
Mantenha seu Sistema Leve e Rápido com a Limpeza do APT!
Procurando vídeos de YouTube pelo terminal e assistindo via mpv (2025)
Jogos baixados na Central de Aplicativos mas que não abrem (1)
debian com wayland, configuracao de teclado. Mudou Tudo! [RESOLVIDO] (1)
Iinstalar o Scanner Kodak i940 no Linux Mint 19/20? (3)
Pastas da raiz foram para a área de trabalho [RESOLVIDO] (11)