điều này được gọi là chuỗi phương thức và được thực hiện bằng cách trả về một tham chiếu đến lớp ($ this), hoặc một đối tượng lớp khác từ các hàm đó. Sau đó, bạn có thể gọi một phương thức trên đối tượng được trả về.
Đây là một ví dụ đơn giản.
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();
đầu ra:
'hello'
Chỉ để giải thích thêm một chút, đoạn mã trên $a->bar('hello')->out();
gần tương đương với việc thực hiện điều này:
$a = new foo();
$b = $a->bar('hello'); //$a and $b are the same instance of the object
$b->out();
Bây giờ vì bar()
trả về $this
chúng tôi có thể gán nó cho $b
như trên và sau đó gọi out()
. Nhưng $a
và $b
cả hai đều tham chiếu đến cùng một phiên bản của foo
đối tượng, vì chúng tôi đã trả về $this
từ bar()
. Vì vậy, không cần thêm biến "giả" này vì chúng ta chỉ có thể tham chiếu trực tiếp đối tượng trả về cho lần gọi tiếp theo. Điều này hoạt động với bất kỳ đối tượng nào được trả về từ một phương thức (không chỉ $ this), nhưng rõ ràng sau đó lệnh gọi tiếp theo trong chuỗi chống lại đối tượng được trả về.