Mapeamento dinâmico de dados em PHP
Publicado por Isaque Vieira de Sousa Alves (última atualização em 20/01/2010)
[ Hits: 8.256 ]
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. } } ?>
Folha de Ponto, com datas móveis como Carnaval Sexta-Feira Santa e Corpus Christi
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Problema em SSD ao dar boot LinuxMint LMDE FAYE 64 (0)
Baixar jogos Independentes para Ubuntu [RESOLVIDO] (4)
PIP3 - erro ao instalar módulo do mariadb para o Python (1)
Linux x Plataformas de Trading - um problema (in-)solúvel? (4)