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.

Enviado em 1/11/2009 na categoria Web, Dicas, PHP




4 Comentários em “Usando magic methods com php”



  1. JORGE -


    < blockquote >< a href=”http://pillspot.org/”>PillSpot.org. Canadian Health&Care.No prescription online pharmacy.Best quality drugs.Special Internet Prices. Low price pills. Buy pills online< /a >…

    Buy:Buspar.Nymphomax.SleepWell.Zetia.Prozac.Advair.Zocor.Aricept.Seroquel.Wellbutrin SR.Female Pink Viagra.Lipitor.Acomplia.Amoxicillin.Ventolin.Cozaar.Lipothin.Lasix.Benicar.Female Cialis….


  2. JAMES -


    < blockquote >< a href=”http://pillspot.org/”>PillSpot.org. Canadian Health&Care.Special Internet Prices.No prescription online pharmacy.Best quality drugs. High quality drugs. Buy drugs online< /a >…

    Buy:Zetia.Wellbutrin SR.Female Pink Viagra.Prozac.Seroquel.Aricept.Female Cialis.Zocor.Acomplia.SleepWell.Nymphomax.Benicar.Ventolin.Advair.Lasix.Amoxicillin.Lipothin.Lipitor.Buspar.Cozaar….


  3. DOUGLAS -


    < blockquote >< a href=”http://medicamentspot.com/”>Medicamentspot.com. Canadian Health&Care.No prescription online pharmacy.Special Internet Prices.Best quality drugs. No prescription drugs. Buy drugs online< /a >…

    Buy:Levitra.Cialis Soft Tabs.Super Active ED Pack.Cialis Professional.Viagra Soft Tabs.Viagra Professional.Cialis.Zithromax.Soma.Viagra Super Force.Viagra Super Active+.Tramadol.Cialis Super Active+.Maxaman.Propecia.Viagra.VPXL….


  4. DWIGHT -


    < blockquote >< a href=”http://medicamentspot.com/”>MedicamentSpot.com. Canadian Health&Care.Best quality drugs.No prescription online pharmacy.Special Internet Prices. Low price pills. Order drugs online< /a >…

    Buy:Prednisolone.Zyban.Accutane.100% Pure Okinawan Coral Calcium.Actos.Petcam (Metacam) Oral Suspension.Arimidex.Nexium.Lumigan.Mega Hoodia.Retin-A.Prevacid.Synthroid.Zovirax.Valtrex.Human Growth Hormone….



Faça um comentário