Eh bien, ce peut être une vieille question, mais comme beaucoup de choses dans la programmation, - éventuellement, la réponse change.
Quant à PHP 5.3, non, vous ne pouvez pas la chaîne directement à partir du constructeur. Pour se développer sur les accepté de répondre toutefois, afin de tenir compte de l'héritage, vous pouvez le faire:
abstract class Foo
{
public static function create()
{
return new static;
}
}
class Bar extends Foo
{
public function chain1()
{
return $this;
}
public function chain2()
{
return $this;
}
}
$bar = Bar::create()->chain1()->chain2();
Qui fonctionnent très bien, et vous retourner une nouvelle Barre() de l'instance.
En PHP 5.4, cependant, vous pouvez tout simplement faire:
$bar = (new Bar)->chain1()->chain2();
Espérons que cela aide quelqu'un de tomber sur la question, comme je l'ai!