2012-06-17 9 views
16

ज़ेन फ्रेमवर्क की जांच मैंने पाया कि इसकी किसी भी वर्ग (जिनकी मैंने जांच की है) की प्रत्येक सेटर विधि उस वर्ग के उदाहरण को लौटाती है जिसमें वह रहता है। न केवल कुछ मूल्य निर्धारित करता है बल्कि एक मूल्य निर्धारित करता है और यह $ भी देता है। उदाहरण के लिए:

/* Zend_Controller_Router */ 
public function setGlobalParam($name, $value) { 
    $this->_globalParams[$name] = $value; 
    return $this; 
} 

    /* Zend_Controller_Request */ 
public function setBaseUrl($baseUrl = null) { 
    // ... some code here ... 
    $this->_baseUrl = rtrim($baseUrl, '/'); 
    return $this; 
} 

    /* Zend_Controller_Action */ 
public function setFrontController(Zend_Controller_Front $front) { 
    $this->_frontController = $front; 
    return $this; 
} 

और इसी तरह। प्रत्येक सार्वजनिक सेटर $ 1 देता है। और न केवल सेटर्स, कुछ क्रिया विधियां भी हैं, वे $ 1 भी लौटाते हैं:

public function addConfig(Zend_Config $config, $section = null) { 
    // ... some code here ... 
    return $this; 
} 

इसकी आवश्यकता क्या है? $ 1 की वापसी क्या करती है? क्या इसका कुछ खास अर्थ है?

+4

'$ (यह)' लौटने का मतलब है कि आप चेन विधियों, जैसे '$ myClass-> method_1 ($ x) -> method_2 ($ y)' कर सकते हैं। –

+1

मैंने इसे अतीत में भी देखा और कभी भी सवाल पूछने के लिए सोचा नहीं। धन्यवाद अब मुझे जवाब है। – RockyFord

उत्तर

37

return $this तरह के तरीकों की श्रंखला की अनुमति देता है:

$foo->bar('something')->baz()->myproperty 
4

ऐसा नहीं है कि प्रणाली को बुलाती है पर किसी ऑब्जेक्ट कर सकते हैं "श्रृंखलित" हो, इस तरह तो है।

$obj -> setFoo ('foo') -> setBar ('bar') -> setBaz ('baz') -> setFarble ('farble'); 
+0

मुझे पता है कि यह टिप्पणी 2012 में बनाई गई थी और इसका मुख्य उद्देश्य श्रृंखला विधियों के उपयोग को प्रदर्शित करना है, लेकिन आप सभी के लिए नौसिखिया बस इसके बारे में सीख रहे हैं: कृपया उन सभी रिक्त स्थानों को बीच में न रखें! :) – bazzaretta

+0

@bazzaretta आप सफेद जगह के मालिक नहीं हैं! – GordonM

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