Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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....
Obrigadão.
Mas tenho mais uma ultima sobre o assunto. Os métodos precisam estar necessariamente estar na mesma ordem da chamada?
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.
acho que saquei, vou fazer uns teste e retorno se tiver dúvida.
Agradeço d+++
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.