Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: slack+flux
Por U-Neeks
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Scripts

Linux user

Publicado por Isaque Vieira de Sousa Alves em (última atualização em 20/01/2010)   [ 3790 hits ]

Login: isaque_alves, 255409 pontos

Homepage: www.isaquealves.com   


Descrição

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.

[ Download: Map.php ]   [ Enviar nova versão ]

Versões atualizadas deste script (NOVO)
Linux user

Publicado 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.

(versão 2)

 

[ Esconder código-fonte ]

<?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.
    }
}


?>

Scripts recomendados
   Script Linux recomendado Calsse eveFile: manipulação de arquivos
   Script Linux recomendado FormConstructor: Formulário Construído por Variável
   Script Linux recomendado Jpgraph e mysql
   Script Linux recomendado Previsão do tempo para Porto Alegre/RS
   Script Linux recomendado Guestbook sem instalação

Comentários
[1] Comentário enviado por isaque_alves em 11/01/2010 - 17:03h:

Ops...
Cometi um erro crasso... mandei pra fila de espera antes de testar... tem alguns errinhos... E agora, as correções:

Método put:
/**
*
* @param mixed $key
* @param mixed $value
*/
public function put($key, $value) {

$this->_mapStructrure[$key] = $value;
}

Método remove:
/**
*
* @param mixed $key
*/
public function remove($key)
{
unset($this->_mapStructrure[$key]);

}

O problema com o put era que eu estava criando um array com os valores de $key... daí não dava pra adicionar nada tendo como chave $key...
e com remove, tava fazendo mais trabalho que o necessário... basta unset...
O resto tá bacana...

[2] Comentário enviado por albertguedes em 13/01/2010 - 13:52h:

Nessas horas que a gente precisa de um svn no VOL hehehe.
Mas valeu pelo script, mão na roda.


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.