मैं अपनी इकाई वर्ग पर सेवा प्रबंधक का उपयोग करने की कोशिश कर रहा हूं लेकिन मुझे ऐसा करने का सबसे अच्छा तरीका नहीं पता है।मॉडल क्लास में ServiceManager का उपयोग करने का सबसे अच्छा तरीका?
यह नियंत्रक पर आसान है क्योंकि हम सेवा प्रबंधक को कॉल कर सकते हैं: $ this-> getServiceLocator();
लेकिन, मेरी इकाई वर्ग में, भले ही मैं ServiceLocatorAwareInterface लागू करता है मैं ServiceManager retieve कर सकते हैं, क्योंकि मेरी इकाई श्रेणी सेवा प्रबंधक के साथ फोन नहीं है:
तो सबसे अच्छा तरीका क्या है:
1 - मेरे नियंत्रक 2 से मेरी इकाई वर्ग में सेवा प्रबंधक पास करें - मेरी इकाई वर्ग 3 - ... बनाने के लिए ServiceManager का उपयोग करना ...?
सबसे अच्छा मेरी समस्या को समझने के लिए है कि मेरे कोड है जो काम नहीं करता है:
मेरे इकाई वर्ग:
class Demande extends ArraySerializable implements InputFilterAwareInterface {
/../
public function getUserTable() {
if (! $this->userTable) {
$sm = $this->getServiceLocator();//<== doesn't work !
$this->userTable = $sm->get ('Application\Model\UserTable');
}
return $this->userTable;
}
बहुत उपयोगी जवाब! मॉडलमैनगर को मॉडल में इंजेक्ट करने का एक अन्य कारण इस प्रकार से हम अपने ऑब्जेक्ट को क्रमबद्ध नहीं कर सकते हैं (ServiceManager पर बंद होने के कारण)। और इसलिए हम सत्र पर मॉडल को सहेज नहीं सकते हैं। –
एकमात्र चीज़ जोड़ी जाने की आवश्यकता है, मुझे लगता है कि आपको 'क्लोजर' का अधिक उपयोग नहीं करना चाहिए। इसके बजाए फैक्ट्री-क्लास लिखें। यह समग्र प्रदर्शन को बढ़ावा देगा, क्योंकि कक्षाएं केवल मांग पर तत्काल होंगी। सभी बंदरगाहों को प्रत्येक अनुरोध पर तत्काल किया जाएगा। – Sam
एक और बात: यदि कुछ निर्भरताएं पूरी तरह से ** आवश्यक हैं ** इसे सेटर-इंजेक्शन – Sam