PHP - Criando uma classe que concatena métodos
É comum em frameworks ou bibliotecas aplicarmos métodos em cadeia para modificar um dado conteúdo. A ideia deste tipo de classe é evitar criar variáveis temporárias para guardar o resultado de um método para depois inseri-lo em outro a fim de aplicar uma nova modificação. Com o encadeamento de métodos o retorno de cada um é lido pelo seguinte automaticamente.
Para isso existe um truque: os retornos dentro de cada método. Vamos ver um exemplo.
Class Sequencia
{
public $retorno;
public function primeiro($var)
{
$this->retorno .= " Primeiro {$var}:";
return $this;
}
public function segundo($var)
{
$this->retorno .= " Segundo {$var}:";
return $this;
}
}
$seq = new Sequencia;
$seq->primeiro('inserido')->segundo('Texto');
var_dump($seq);
O retorno ficará assim:
object(Sequencia)#1 (1) { ["retorno"]=> string(34) " Primeiro inserido: Segundo Texto:" }
Se invertermos a sequência de métodos:
$seq = new Sequencia;
$seq->segundo('Texto')->primeiro('inserido');
var_dump($seq);
O retorno ficará assim:
object(Sequencia)#1 (1) { ["retorno"]=> string(34) " Segundo Texto: Primeiro inserido:" }
Para que os métodos encadeados funcionem devemos aplicar a cada um retorno do objeto referência da classe $this.
O retorno de $this traz consigo todo o conteúdo do objeto no estado atual. Assim seu estado modificado está pronto para ser enviado e reconhecido pelo próximo método.
Uma solução muito bacana e que será bem útil em projetos que exigem a utilização de vários métodos em sequência caso seja desejado um processamento contínuo ou o aprofundamento na análise de um dado.
Por hoje é isso
Abraços
Comentários
Postar um comentário