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