Mapeamento dinâmico de dados em PHP
Publicado por Isaque Vieira de Sousa Alves (última atualização em 20/01/2010)
[ Hits: 8.279 ]
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.
}
}
?>
Gerador de Formulários com validações me PHP e JavaScript
Monitoramento de Temperatura do Servidor
Gerando Código de barras no padrão brasileiro compatível com Browsers Linux e Windows
Install PHP8, 8.2, 8.3 no Deepin 23
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
Scripts ou binários [RESOLVIDO] (3)
VOL já não é mais como antes? (10)
Pergunta: Meu teclado não está respondendo direito como e consertar? ... (4)









