2012-08-31 7 views
7

ज़ेंड फ्रेमवर्क में, Zend_Aplication ऑब्जेक्ट में बूटस्ट्रैप ऑब्जेक्ट बूटस्ट्रैप या घटकों को कॉन्फ़िगर करने के लिए है। बदले में बूटस्ट्रैप क्लास को कॉन्फ़िगरेशन पैरामीटर तक पहुंचने के लिए zend_application ऑब्जेक्ट तक पहुंच है।
मेरा प्रश्न यह है कि सर्कुलर निर्भरता के कारण यह किस प्रकार का पैटर्न है या यह कोड गंध है।ऑब्जेक्ट्स एक दूसरे के ज्ञान रखते हैं

उत्तर

2

ज़ेंड फ्रेमवर्क 1 फूला हुआ है, यह निश्चित रूप से है।

उस $_application का कारण द्वि-दिशात्मक संबंध का प्रतिनिधित्व करने वाला कारण मॉड्यूल की स्वतंत्र बूटस्ट्रैप फ़ाइलों के कारण है।

यह अजीब है, मुझे लगता है, क्योंकि जब बजाय Zend_Aplication सेट होने के, मॉड्यूल के साथ काम कर आप के बजाय मुख्य बूटस्ट्रैप होगा:

/** 
* Set application/parent bootstrap 
* 
* @param Zend_Application|Zend_Application_Bootstrap_Bootstrapper $application 
* @return Zend_Application_Bootstrap_BootstrapAbstract 
*/ 
public function setApplication($application) 
{ 
    if (($application instanceof Zend_Application) 
     || ($application instanceof Zend_Application_Bootstrap_Bootstrapper) 
    ) { 
     if ($application === $this) { 
      throw new Zend_Application_Bootstrap_Exception('Cannot set application to same object; creates recursion'); 
     } 
     $this->_application = $application; 
    } else { 
     throw new Zend_Application_Bootstrap_Exception('Invalid application provided to bootstrap constructor (received "' . get_class($application) . '" instance)'); 
    } 
    return $this; 
} 

भी कोड गंध की बहुत सी चीज़ें हैं:

/** 
* Constructor 
* 
* Sets application object, initializes options, and prepares list of 
* initializer methods. 
* 
* @param Zend_Application|Zend_Application_Bootstrap_Bootstrapper $application 
* @return void 
* @throws Zend_Application_Bootstrap_Exception When invalid application is provided 
*/ 
public function __construct($application) 
{ 
    $this->setApplication($application); 
    $options = $application->getOptions(); 
    $this->setOptions($options); 
} 

बूटस्ट्रैप फ़ाइल विकल्प की जरूरत है, तो asking for the options के बजाय, यह Zend_Application उम्मीद तो विकल्प प्राप्त करने के:

$options = $application->getOptions(); 
$this->setOptions($options); 

ऐसा लगता है कि वे बस इंटरफ़ेस के प्रकार के विधि setApplication() द्वारा की उम्मीद ध्यान न दें और यह निम्नलिखित में से एक हो सकते हैं:

  • Zend_Application
  • Zend_Application_Bootstrap_Bootstrapper
  • Zend_Application_Bootstrap_ResourceBootstrapper

मैं इस गड़बड़ी को समझने और जेडएफ 2 पर स्विच करने की कोशिश छोड़ दूंगा;)

+0

मैं इस तरह की भीड़ में नहीं होगा, विशेष रूप से यह जानकर कि ZF2 ZF1 (bloated या नहीं) की तुलना में कैसे प्रदर्शन करता है। –

+0

@ WebnetMobile.com विचार यह है कि ZF1 की तुलना में ZF2 स्रोत कोड का अध्ययन करना बेहतर है। चूंकि ओपी ने किसी भी त्रुटि का उल्लेख नहीं किया है, केवल कोड गंध होने पर ही आश्चर्य हुआ। इसका जवाब है हाँ** –

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