Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Eduardo Giullyanny

$this->1->2

Recommended Posts

Boa noite amigos;

 

Tenho uma dúvida;

 

Em alguns lugares vejo isso: $this->tal()->tal2()->tal3();

 

Eu me lembro de estudar sobre isso, mas não tinha dispetado meu interesse, agora estou querendo saber mais.

 

Me lembro que este tipo de desenvolvimento tinha um nome... não me lembro. Gostaria de saber e se tiverem algum exemplo?

 

Obrigado....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fluent Interface, ou Chain of Responsability.

 

 

Um método retorna o próprio objeto (this) ou retorna outro objeto. Ai você consegue concatenar métodos um atrás do outro dessa forma.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A ordem deve ser referente aos objetos retornados, você não pode chamar um método de um objeto que não possui tal método. Veja só:

class Foo {
   public function doSomething() {
      echo 'do something';
   }
}

class Bar {
   public function returnFoo() {
      return new Foo();
   } 
}

class Baz {   
   public function returnBar() {
      return new Bar();
   } 
}

Chamada:

$baz = new Baz();
$baz->returnBar()->returnBaz();

Saída:

do something

Entretanto, o código acimada ilustrado, não é fluent interface, o código abaixo é:

class Collection {

   private $list = array();

   public function add($number) {
       $this->list[] = $number;
       
       return $this; // <-- esse trecho define a fluent interface;
   }
}

Código (similar ao uso de jQuery):

$collection = new Collection();
$collection->add(1)
           ->add(2)
           ->add(3)
           ->add(4)
           ->add(5);

Adicionar um abaixo do outro é apenas uma questão de organização.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.