D'abord, attention,
$request->query->get('tag');
ne fait pas du tout ce que tu penses. Il n'y a pas de cascade, il n'y a qu'une seule méthode qui est appelée: get(), qui est une fonction du ParameterBag $query, lui-même une propriété de $request.
Ensuite, comme je n'ai pas les types retournés par tes méthodes, je ne peux pas te répondre précisément sur ton cas, mais il y a deux choses:
- il y a d'abord l'utilisation de méthode en cascade/chaînées. Une méthode d'une classe A retourne un objet B, qui elle-même possède une autre méthode méthode, ce qui donne
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
class A
{
public function methodA()
{
return new B;
}
}
class B
{
public function methodB()
{
//faire quelque chose ici
}
} |
Utilisation:
1 2 3 4 5
|
$a = new A;
$a->methodA() //on obtient un objet B
->methodB(); // méthode qui appartient à B |
Puis il y a la technique du fluent interface, dans laquelle on utilise les méthodes chaînées, mais sur un seul et unique objet. Chaque méthode utilisée returne donc l'instance en cours de l'objet ($this).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
class A
{
public function methodA()
{
//faire quelque chose
return $this;
}
public function methodB()
{
//faire autre chose
return $this;
}
} |
Utilisation:
1 2 3 4
|
$a = new A;
$a->methodA() //on obtient toujours l'objet A,
->methodB(); // méthode qui appartient à A |
Regarde les méthodes de jQuery, en javascript pour voir à quel point ce genre de technique peut être intéressante:
$( "div.first" ).slideUp( 300 ).delay( 800 ).fadeIn( 400 );
Mais attention, ça peut être difficile à lire aussi car trop de méthodes chaînées rend le code incompréhensible. Surtout si tu mélanges méthodes chaînées ordinaires et fluent interface, et on ne sait plus qui retourne quoi.
Partager