Artigos da Categoria 'PHP'

(Listados por Data)

    Usando magic methods com php

    Hora ou outra a gente se depara com algumas funcionalidades que uma linguagem pode nos proporcionar. Às vezes até hesitamos em mudar nossos conceitos, mas é sempre bom tentar enxergar se determinada opção na linguagem vale a pena de ser usada na implementação. O problema é que eu tinha uma classe a fazer, com 50 atributos e estava com uma preguiça danada de escrever todo o código (sei que existem ferramentas que resolvem o caso - http://www.card2u.com.my/ClassBuilder/ ou http://www.phpclasses.org/browse/package/4794.html que geram o código e ainda oferece uma modelagem MVC com suporte à conexão nativa) mas precisava de algo mais “crú”. Então, veja o que os magic methods __get() e __set() fazem por você nessas horas:

    Aqui uma classe teste

     
    <?
     
    class Class1 {
     
     
    //Lista de atributos
     private $var1;
     private $var2;
     private $var3;
     
     
     
    /*
    * Método mágico que retorna os valores das variáveis privadas.
    *
    */
     
      public function __get($atributo)
        {
            if (isset($this->{$atributo}))
            {
                if ($this->{$atributo})
                    return $this->{$atributo};
            }
            else
            {
                return false;
            }
        }
     
     
    /*
    * Método mágico para atribuir valores nas variáveis privadas. 
    *
    */
     
       public function __set($name, $value) {
            $this->$name = $value;  
       }
     
     
    }
    ?>

    Testando a classe Class1

    <?
     
    //Declaração
    $classe1 = new Class1();
    //Atribui 'Valor 1' a $var1
    $classe1->var1 = "Valor 1";
    //Atribui 'Valor 2' a $var2
    $classe1->var2 = "Valor 2";
     
    print $classe1->var1;
    print $classe1->var2;
     
    ?>

    Pronto, não precisei me preocupar em escrever getters e setters para os atributos da classe.

    Postado em 1/11/2009