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.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *