Artigo: Métodos mágicos get e set do PHP 5 - Gigasystems

PHP

Em por

metodos-magicos-get-e-set-do-php-5
Métodos mágicos get e set do PHP 5

Hoje iremos abordar os métodos mágicos __get() e __set() do PHP 5.  O PHP nos possibilita utilizar o conceito de encapsulamento da orientação a objetos de forma mais econômica, com a utilização destes métodos.

Em uma classe implementada nos padrões convencionais, para cada atributo privado declarado, precisamos criar 2 métodos (o set e o get) para atribuir e recuperar informações nesse atributo fora da classe.

Com os métodos mágicos __get e __set do PHP fica tudo mais fácil, porque basta que eu implemente-os em um arquivo e eles poderão ser utilizados para todos os atributos que a classe possuir e, melhor ainda, por todas as classes do sistema, bastando para isso usar um include desse arquivo.

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 são definidos 2 parâmetros. No primeiro informamos o atributo que deverá receber o valor e no segundo informamos o valor em si. Já no método __get informamos apenas o atributo no qual desejamos capturar o valor armazenado.

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

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

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

Muito prático e fácil de entender e também de se utilizar.

Até a próxima.

Olá, deixe seu comentário para Métodos mágicos get e set do PHP 5

Já temos 3 comentário(s). DEIXE O SEU :)
Douglas Fernando

Douglas Fernando

Muito obrigado pela explicação, simples e era o que eu procurava mesmo. Vlw !
★★★★★DIA 01.07.19 21h13RESPONDER
Marcos Martins
Enviando Comentário Fechar :/
Andrews

Andrews

Não seria uma boa prática eu verificar se o atributo existe antes de "setá-lo" na função set?
Exemplo:
public function __set($atrib, $value){
if(property_exists($this, $atrib){
$this->$atrib = $value;
}
else{ echo 'Atributo inexistente';}
}

Sei que echo não é uma boa prática, mas talvez retornar isso a uma variável..sei lá..
★☆☆☆☆DIA 16.05.15 14h05RESPONDER
N/A
Enviando Comentário Fechar :/
Marcos Martins

Marcos Martins

Olá Andrews, seria sim e isso vai depender muito da sua regra de negócio. Poderia até colocar uma mensagem mais específica para que fique mais fácil encontrar um problema de validação ou coisa do tipo, caso aconteça.

Até +
★☆☆☆☆DIA 20.05.15 20h05RESPONDER
N/A
Enviando Comentário Fechar :/
Enviando Comentário Fechar :/

Veja Também:

Artigos Relacionados a categoria: PHP

Soluções

...CURTIU? AINDA NÃO VIU NOSSO PORTFÓLIO?


Se ainda não viu nosso Portfólio e quer conhecer um pouco mais... aproveite, veja agora mesmo nossos Cases de Sucesso e tenha seu site nos padrões atuais preparado para maioria dos dispositivos e navegadores.

Usamos cookies para manter o site seguro, registrar e personalizar sua navegação. Para mais detalhes sobre essa atividade, acesse nossa Politica de Privacidade

Entendi