Como usar os métodos mágicos

Como usar os métodos mágicos

20/02/2016 Postado por Thiago Hofmeister 0

No último post, vimos como criar a nossa tela de visão, hoje vamos ver como facilitar o nosso código, usando os famosos métodos mágicos. Existem diversos métodos, porém vamos ver quatro deles agora:  construct, get, set e toString.

O que são métodos mágicos?

Os métodos mágicos, são utilizados para realizar de uma maneira genérica o controle da nossa classe, permitindo acesso a manipulação dos nossos atributos e do ciclo de vida da nossa classe. Permitindo que a gente realize pré-configurações no momento de instanciar a classe e também configurações na hora da destrução dessa classe.

Agora que sabemos o que são os métodos mágicos, vamos ver um resumo sobre os que vamos trabalhar nesse post.

O método construtor (__construct)

O nosso construtor, serve para que a gente faça pré-configurações no momento da instanciação da classe. Quando não definimos um construtor, ele vem sem nada, o que nos permite instanciar uma classe dessa maneira:

$Pessoa = new Pessoa();

// ou

$Pessoa = new Pessoa;

Chamamos isso de "construtor vazio". Porém, também podemos utilizar construtores com determinadas informações, como a seguir:

// Passando atributos

$Pessoa = new Pessoa('Nome', idade, 'telefone', 'sexo'); 

Quando passamos atributos a partir do construtor, já instanciamos um objeto com valores definidos. Nesse caso, temos um "construtor cheio".

O método "pegar" (get) 

O nosso método "pegar" serve literalmente para pegarmos o valor do nosso atributo. A partir dele, vamos ter acesso aos atributos da nossa classe, principalmente quando eles forem privados (private). Um atributo privado só pode ser acessado através de um método, em Java utilizamos um método para cada atributo, aqui no PHP podemos fazer um método que fará isso para nós. Ou seja, um método genérico. E, esse método, será igual sempre, em todas as nossas classes. Veja o método a seguir:

// Código do get

public function __get ($atributo) {

      return $this->$atributo;

}

Como você pode ver, temos uma função chamada "__get" e nela passamos um parâmetro chamado "$atributo", que irá receber qual atributo queremos exibir na tela. Quando formos usar o nosso get, faremos da seguinte forma:

// Declaramos nosso objeto

$Pessoa = new Pessoa(); // Podendo ser com construtor cheio

// E declaramos uma variável que irá receber nosso valor

$Nome = "";

// Agora, puxamos através do get o valor para essa variável

$Nome = $Pessoa->nome;

Dessa forma, teremos um nosso valor dentro de uma variável e ele poderá ser exibido a qualquer momento.

O método editar (set)

O método editar serve para que possamos colocar um valor em nossos atributos. Isto é, darmos um nome, uma idade, um telefone e um sexo para a nossa "Pessoa" (nesse exemplo é claro). Se não utilizarmos o set em nenhum momento, principalmente ao usarmos construtor vazio, nossa classe não irá receber valores e ficará sempre em branco. Assim como o get, o nosso método set será sempre igual. Veja:

// Código do set

public function __set ($atributo, $valor) {

      $this->$atributo = $valor;

}

 Como você pode ver temos uma função chamada "__set" e nela temos dois parâmetros. O primeiro ($atributo) serve para escolhermos qual atributo da classe iremos editar, já o segundo ($valor) serve para informarmos o valor que esse atributo irá receber. Veja um exemplo:

// Declaramos nosso objeto

$Pessoa = new Pessoa(); // Podendo ser com construtor cheio

// E damos um valor a um atributo

$Pessoa->Nome = "Thiago"

Assim, estamos dizendo que no objeto Pessoa, o atributo Nome terá o valor de Thiago, nele também poderíamos ter editado os demais atributos.

O método de impressão (toString)

 O método de impressão (toString) serve para mostrarmos na tela todos os nossos atributos da classe e ele também permite que a gente exiba outros métodos da classe, juntamente com os atributos. Esse método irá variar de acordo com a classe. Veja o exemplo da nossa classe Pessoa:

// Código do toString

public function __toString () {

      return "

Nome: " . $this->nome .

               "
Idade: " . $this->idade .

               "
Telefone: " . $this->telefone .

               "
Sexo: " . $this->sexo . "

";

 

}

Como você pode ver tema uma função chamada "__toString" onde ela não recebe parâmetros, pois ela irá trabalhar apenas com os atributos já existentes na nossa classe, por isso a presença de um SET na nossa classe, para já termos editado os valores. Eu costumo dizer que o nosso toString é uma concatenação do nosso GET. Digo porque se você perceber o nosso GET serve para pegarmos atributos individualmente, já o toString ele pega TODOS os valores de uma só vez. Veja como usar o toString:

// Declaramos nosso objeto

$Pessoa = new Pessoa(); // Podendo ser com construtor cheio

// E chamamos o toString, para isso basta dar um "echo" no nosso objeto

echo $Pessoa;

O PHP ele entende que ao darmos um "echo" no objeto ele precisa buscar o nosso método toString e retorná-lo. Muito fácil não?

Pessoal o post de hoje é isso, espero que tenham gostado. Até a próxima. Caso preferirem tenho uma vídeo aula que explica tudo isso. Veja:

 

Comentários do Artigo

Ainda não foram realizados comentários, seja o primeiro a comentar!

Escreva seu comentário