2011-05-13 10 views
17
class My_View_Helper_Gender extends Zend_View_Helper_Abstract 
{ 
    public function Gender() 
    { 
    // 
    } 
} 

"The class method (Gender()) must be named identically to the concliding part 
of your class name(Gender).Likewise,the helper's file name must be named 
identically to the method,and include the .php extension(Gender.php)" 
(Easyphp websites J.Gilmore) 

मेरा प्रश्न है: एक दृश्य हेल्पर एक विधि की तुलना में अधिक शामिल हो सकती है और मैं अपने सहायक के भीतर से अन्य दृश्य सहायकों कॉल कर सकते हैं?ज़ेन देखें एकाधिक तरीकों से सहायक?

धन्यवाद

लुका

+0

धन्यवाद दोस्त यह पूछ रहे हैं कि –

उत्तर

38

हाँ, सहायकों अतिरिक्त तरीकों हो सकते हैं। उन्हें कॉल करने के लिए, आपको सहायक उदाहरण प्राप्त करना होगा। यह या तो देखें में एक सहायक के उदाहरण हो रही द्वारा प्राप्त किया जा सकता

$genderHelper = $this->getHelper('Gender'); 
echo $genderHelper->otherMethod(); 

या सहायक मुख्य सहायक विधि से खुद को लौट होने से:

class My_View_Helper_Gender extends Zend_View_Helper_Abstract 
{ 
    public function Gender() 
    { 
    return $this; 
    } 
    // … more code 
} 

और फिर फोन $this->gender()->otherMethod()

देखें क्योंकि हेल्पर्स में व्यू ऑब्जेक्ट का संदर्भ होता है, आप किसी भी व्यू हेल्पर के साथ किसी भी उपलब्ध व्यू हेल्पर्स को कॉल कर सकते हैं, उदाहरण के लिए

public function Gender() 
{ 
    echo $this->view->translate('gender'); 
    // … more code 
} 
+0

यह पूछने वाला था कि क्या आप दूसरी बात कर सकते हैं, बहुत सुविधाजनक – Ascherer

+0

'गेटहेल्पर' दृष्टिकोण मेरे लिए काम नहीं करता है। मुझे ऑब्जेक्ट को मुख्य सहायक विधि में वापस करना पड़ा ताकि अन्य सहायक विधियों को बुलाया जा सके। – webkraller

+0

धन्यवाद दोस्त यह मदद करता है –

0

ऐसा कोई प्रावधान नहीं है लेकिन आप इसे अनुकूलित कर सकते हैं।

हो सकता है कि आप पहले पैरामीटर को फ़ंक्शन नाम के रूप में पास कर सकें और इसे कॉल कर सकें।

उदा।

$ this-> CommonFunction ('showGender', $ नाम)

यहाँ showGender

समारोह CommonFunction कक्षा में परिभाषित किया जाएगा और $ नाम होगा

0

parametr इस गॉर्डन के सुझाव के संशोधन करने में सक्षम होना है

class My_View_Helper_Factory extends Zend_View_Helper_Abstract { 
    private static $instances = array(); 
    private $options; 

    public static function factory($id) { 
     if (!array_key_exists($id, self::$instances)) { 
      self::$instances[$id] = new self(); 
     } 
     return self::$instances[$id]; 
    } 

    public function setOptions($options = array()) { 
     $this->options = $options; 
     return $this; 
    } 

    public function open() { 
     //... 
    } 

    public function close() { 
     //... 
    } 
} 

आप सहायक इस तरह से उपयोग कर सकते हैं:

$this->factory('instance_1')->setOptions($options[1])->open(); 
//... 
    $this->factory('instance_2')->setOptions($options[2])->open(); 
    //... 
    $this->factory('instance_2')->close(); 
//... 
$this->factory('instance_1')->close(); 
(खुद गुणों के साथ प्रत्येक) सहायक की अधिक उदाहरण का उपयोग

संपादित करें: यह मल्टीटन (जैसे सिंगलटन नामक एक डिज़ाइन पैटर्न है, लेकिन आप अधिक उदाहरण प्राप्त कर सकते हैं, प्रति दी गई एक कुंजी)।

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