これはメソッドチェーンと呼ばれ、class($ this)への参照、またはこれらの関数からの別のクラスオブジェクトを返すことによって行われます。次に、返されたオブジェクトのメソッドを呼び出すことができます。
これが簡単な例です。
class foo{
protected $_bar;
public function bar($value){
$this->_bar = $value;
return $this;
}
public function out(){
echo $this->_bar;
}
}
$a = new foo();
$a->bar('hello')->out();
出力:
'hello'
もう少し説明すると、上記のコード$a->bar('hello')->out();
これを行うのとほぼ同じです:
$a = new foo();
$b = $a->bar('hello'); //$a and $b are the same instance of the object
$b->out();
bar()
$this
を返します $b
に割り当てることができます 上記のように、out()
を呼び出します 。しかし、$a
および$b
どちらもfoo
の同じインスタンスを参照します $this
を返したのでオブジェクト bar()
から 。したがって、次の呼び出しのためにreturnオブジェクトを直接参照できるため、この余分な「スプリアス」変数は必要ありません。これは、メソッドから返されるすべてのオブジェクト($ thisだけでなく)で機能しますが、チェーン内の次の呼び出しは、返されたオブジェクトに対して行われることは明らかです。