Mapeamento dinâmico de dados em PHP
Publicado por Isaque Vieira de Sousa Alves (última atualização em 20/01/2010)
[ Hits: 8.205 ]
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. } } ?>
Leitura de planilhas com PhpSpreadsheet
Monitoramento simples de servidores [versão 1.0]
Monitoramento de processos - TOP
Classe para conversões de data/hora em diversos formatos
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Atualizar Debian Online de uma Versão para outra
Instalar driver Nvidia no Debian 13
Redimensionando, espelhando, convertendo e rotacionando imagens com script
Debian 13 Trixie para Iniciantes
Convertendo pacotes DEB que usam ZSTD (Padrão Novo) para XZ (Padrão Antigo)
Rust é o "C da nossa geração"? (3)
Gerenciador de arquivos é finalizado ao abrir pasta específica (2)