Une méthode peut renvoyer un objet. Vous pouvez attribuer cet objet à une variable, puis appeler des méthodes sur elle:
$objB = $objA->getObjectB();
$objB->someMethod();
Ou vous pouvez ignorer l'affectation et juste inline il;
$objA->getObjectB()->someMethod();
Tant que vos méthodes renvoient des objets, vous pouvez juste garder les empiler:
$objA->getObjectB()->getObjectC()->getObjectD()->getObjectE();
est de même pour les propriétés de l'objet. Une propriété publique peut contenir un autre objet:
$objA->objB = new objectB();
$objA->objB->someMethodOnObjectB();
Ainsi, les méthodes qui retournent un objet et des propriétés publiques qui contiennent un objet peuvent être empilés comme celui-ci. Vous pouvez les mélanger aussi:
$objA->getObjectB()->somePropertyOnObjectB->someMethod();
Voir aussi Fluent Interface. Il est courant que les objets renvoient des instances d'eux-mêmes pour les méthodes de mutateur. Cela vous permet de transformer ceci:
$obj = new Object();
$obj->setFoo('foo');
$obj->setBar('bar');
$obj->setBaz('baz');
$obj->doSomething();
Dans ceci:
$obj = new Object();
$obj->setFoo('foo')->setBar('bar')->setBaz('baz')->doSomething();
Et en PHP 5.6+, vous ne devez pas même affecter l'objet à une variable, vous pouvez déréférencer l'appel new
directement:
(new Object())->setFoo('foo')->setBar('bar')->setBaz('baz')->doSomething();
* "Qu'est-ce que CI (une méthode?)? "* - Très probablement CodeIgniter, si c'est ce que vous demandez. Vous auriez besoin de lire les docs. –
Ce ne sont pas des méthodes. Tout ce qui n'est pas entre crochets est juste une propriété, et cette propriété est susceptible d'être un objet dans cet exemple, puisque vous pouvez alors appeler les propriétés/méthodes de cet objet en utilisant un autre ->. Seul l'appel à set_message est un appel de méthode. C'est une syntaxe PHP assez basique, et similaire à la syntaxe OO que vous pouvez trouver dans d'autres langues. En C# cela pourrait ressembler à 'this.CI.form_validation.setMessage (' – ADyson