Mapeamento dinâmico de dados em PHP
Publicado por Isaque Vieira de Sousa Alves (última atualização em 20/01/2010)
[ Hits: 8.259 ]
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.
}
}
?>
Cria gráficos para monitoramento de consumo de CPU e Memória a partir de arquivos [Atualização].
Cria gráficos para monitoramento de consumo de CPU e Memória a partir de arquivos [Atualização].
Monitoramento de Temperatura do Servidor
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
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
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
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)
Instalação não está resolvendo as dependencias (2)
Captação de áudio no zorin linux começa a diminuir com o tempo (5)
Alternativas ao Multilogin para gerenciamento de múltiplas contas/prof... (0)









