Ícone do site dfilitto

Métodos mágicos __set e __get

Dicas PHP

O post Métodos mágicos __set e __get explica como utilizar o conceito de encapsulamento da orientação a objetos de forma mais econômica por meio dos métodos mágicos __set() e __get().

Métodos mágicos __set e __get

Em uma classe implementada nos padrões convencionais, para cada atributo privado declarado e que seu valor necessita ser manipulado “fora da classe”, precisamos criar 2 métodos (o set e o get) para atribuir e recuperar informações nesse atributo

Com os métodos mágicos __set e __get fica mais fácil, pois ao implementá-los você conseguirá interagir com todos os atributos privados que a classe possuir.

Veja um exemplo:

<?php
    class Pessoa {
      private $nome;
      private $sobrenome;
 
      public function __set($atrib, $value){
          $this->$atrib = $value;
      }
 
      public function __get($atrib){
          return $this->$atrib;
      }
    }

No método __set foi definido 2 parâmetros. O primeiro representa o atributo que deverá receber o valor e o segundo parâmetro serve para informar o valor do mesmo.

Já no método __get possui apenas o atributo no qual o usuário capturar o valor armazenado.

Agora vamos a um exemplo de utilização dessa classe:

<?php
   $Pessoa = new Pessoa();
   $Pessoa->nome = 'Rafael';
   $Pessoa->sobrenome = 'Pinheiro';
 
   echo 'Nome: ' . $Pessoa->nome . '<br />';
   echo 'Sobrenome: ' . $Pessoa->sobrenome;

Como os atributos são do tipo private, quando eu os invoco no objeto, na verdade o que está sendo executado são os métodos __set e __get. Essa técnica é chamada de overloading.

ATENÇÃO – O PHP reserva todas as funções com nomes iniciadas com __ como mágicas. É recomendado que não se utilize funções com nomes com __ no PHP, a não ser que deseje-se alguma funcionalidade mágica documentada.

Dica

Acesse nosso canal no YouTube para visualizar outros vídeos sobre programação, como por exemplo Python, Java e Desenvolvimento de sistemas comerciais utilizando a linguagem C#.

Participe do nosso grupo de estudos no Facebook acessando o link https://www.facebook.com/group

Fonte: Rafael Wendel, Manual PHP

Sair da versão mobile