2010-05-28 18 views
8

मैंने PHP में श्रृंखला योग्य ओओपी ऑब्जेक्ट्स पर एक अच्छा परिचय खोजने की कोशिश की है, लेकिन अभी तक कोई अच्छा परिणाम नहीं है।PHP ओओपी: चेनबल ऑब्जेक्ट्स?

ऐसा कुछ कैसे किया जा सकता है?

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

या भी: $this->className->add('1','value')->type('string')->doStuff();

धन्यवाद एक बहुत!

उत्तर

17

कुंजी प्रत्येक विधि के भीतर वस्तु ही वापस जाने के लिए है:

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

हर विधि, उस वस्तु ही देता है, एक विधि श्रृंखला में एक मध्यवर्ती के रूप में इस्तेमाल किया जा सकता है। कुछ और विवरणों के लिए Wikipedia’s article on Method chaining देखें।

+0

कमाल यह कितना आसान करने के लिए किया गया है। पता नहीं था। बहुत बहुत धन्यवाद गम्बो! – Industrial

11

सिर्फ ऐड() और प्रकार (में इस $ वापसी) विधि:

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

इस लिए एक और शब्द Fluent Interface

+0

एक नोट जोड़ना: विधि चेनिंग एक धाराप्रवाह इंटरफ़ेस बनाने में एक तकनीक है। – koen

संबंधित मुद्दे