Métodos mágicos do PHP
Intercepções: métodos __set(), __get() e __call(). Vamos falar também sobre __toString().
É muito comum a gente encontrar classes básicas com métodos get e set para cada atributo da classe, como mostra o exemplo a seguir:
Usuario.class.php
class Usuario{
private $id;
private $email;
private $nomeCompleto;
public getId(){
return $this->id;
}
public setId($id){
$this->id = $id;
}
public getEmail(){
return $this->email;
}
public setEmail(){
$this->email = $email;
}
...
}
Isso é bastante trabalhoso e sai do conceito de você ter que evitar reescrita de código, por que você fica escrevendo a mesma coisa N vezes para cada classe criada.
Foi quando no PHP 5, foram criados os métodos mágicos.
Método __set():
Sintaxe :
function __set( $propriedade, $valor){
/* Aqui dentro você faz todos os tratamentos que
quiser, no nosso caso eu vou apenas retornar para o
atributo o valor setado.*/
$this->$propriedade = $valor;
}
Método __get():
Sintaxe:
function __get($propriedade){
/* Aqui dentro você faz todos os tratamentos que
quiser, no nosso caso eu vou apenas retornar
o valor que foi atribuído via __set() para o atributo.*/
return $this->$propriedade;
}
Como ficaria a nossa classe básica com o nossos novos métodos ??
Usuario.class.php
class Usuario{
private $id;
private $email;
private $nomeCompleto;
function __get($propriedade){
return $this->$propriedade;
}
function __set( $propriedade, $valor){
$this->$propriedade = $valor;
}
...
}
Perceba que não foi necessário ficar escrevendo um get e um set para cada atributo da classe, isso é uma maravilha =D.
Certo, agora já estamos com a nossa classe básica e como vamos atribuir valores e receber ?
Em nosso arquivo index.php....
index.php
<?php
/*Vamos dar um require_once em nossa classe básica*/
require_once 'Usuario.class.php';
/* vamos instanciar nosso objeto*/
$objUsuario = new Usuario();
/* atribuindo um valor para a propriedade nomeCompleto.*/
$objUsuario->nomeCompleto = "DiaDiadeTi";
/*Imprimindo o valor de um atributo*/
echo $objUsuario->nomeCompleto;
?>
Continuamos na Próxima postagem .... Clique aqui !
Nenhum comentário:
Postar um comentário