2010-05-28 39 views
8

Tôi đã cố gắng tìm một giới thiệu tốt về các đối tượng OOP có thể thay đổi trong PHP, nhưng không có kết quả tốt.PHP OOP: Các đối tượng có thể thay đổi được?

Làm thế nào để thực hiện điều này?

$this->className->add('1','value'); 
$this->className->type('string'); 
$this->classname->doStuff(); 

Hoặc thậm chí: $this->className->add('1','value')->type('string')->doStuff();

Cảm ơn rất nhiều!

Trả lời

17

Điều quan trọng là để trả lại đối tượng bản thân trong mỗi phương pháp:

class Foo { 
    function add($arg1, $arg2) { 
     // … 
     return $this; 
    } 
    function type($arg1) { 
     // … 
     return $this; 
    } 
    function doStuff() { 
     // … 
     return $this; 
    } 
} 

Mỗi phương pháp, mà trả về đối tượng riêng của mình, có thể được sử dụng như một trung gian trong một chuỗi phương pháp. Xem Wikipedia’s article on Method chaining để biết thêm chi tiết.

+0

tuyệt vời như thế nào dễ dàng này là để làm gì. Không biết. Cảm ơn rất nhiều Gumbo! – Industrial

11

chỉ trả $ này trong add() và loại() phương pháp:

function add() { 
    // other code 
    return $this; 
} 
5

hạn khác cho đây là Fluent Interface

+0

Thêm một lưu ý: phương pháp chuỗi là một kỹ thuật trong việc tạo ra một giao diện thông thạo. – koen

Các vấn đề liên quan