हम नियंत्रक के भीतर इकाई प्रबंधक का उपयोग कर सकते के बाहर से इकाई प्रबंधक पाने के लिए, लेकिन हम कैसे Zendframework 2.
उत्तर
में परियोजना के बाकी हिस्सों में इकाई प्रबंधक सिंगलटन उदाहरण उपयोग कर सकते हैं ' सही करने का तरीका यह है कि किसी भी वर्ग में इकाई प्रबंधक को इंजेक्ट करने के लिए कारखाने का उपयोग करें। कारखानों के अलावा, कक्षाओं को वास्तव में सेवा लोकेटर से अवगत नहीं होना चाहिए। तो, अपने मॉड्यूल config इस प्रकार दिखाई देगा:
'controllers' => array(
'factories' => array(
'mycontroller' => 'My\Namespace\MyControllerFactory'
)
)
फिर अपने कारखाने वर्ग कुछ इस तरह दिखेगा:
use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
class MyControllerFactory implements FactoryInterface
{
public function createService(ServiceLocatorInterface $serviceLocator)
{
$serviceLocator = $serviceLocator->getServiceLocator();
$myController = new MyController;
$myController->setEntityManager(
$serviceLocator->get('doctrine.entitymanager.orm_default')
);
return $myController;
}
}
किसी अन्य वर्गों कि इकाई प्रबंधक का उपभोग करने की जरूरत के लिए एक ही पैटर्न का पालन करें।
यदि आपके पास बहुत सारे और बहुत से वर्ग हैं जो इकाई प्रबंधक का उपभोग करते हैं, तो आप SerivceManager को अपना खुद का इंटाइलाइज़र जोड़ने पर विचार करना चाहेंगे जो किसी कारखाने की आवश्यकता के बिना इकाई प्रबंधक को इंजेक्ट करेगा।
मुझे आपका अंतिम सुझाव पसंद है। वह 'EntityManagerAwareInterface' बना सकता है और ServiceLocator स्वचालित रूप से इसे लागू करने वाले किसी भी वर्ग में इंजेक्ट कर सकता है। मुझे लगता है कि वे इस सिद्धांत का उल्लेख नीचे-नीचे सिद्धांत-ओआरएम-मॉड्यूल पेज के रीडमे पर करते हैं। जल्दी आ रहा है। –
हाँ, आप इनटाइलाइज़र से सावधान रहना चाहते हैं - सेवा प्रबंधक से ऑब्जेक्ट प्राप्त होने पर वे हर बार चलते हैं। यदि आप सर्विसमैनेजर को इनटाइलाइज़र के साथ ढेर करते हैं जिनका उपयोग बहुत अधिक नहीं किया जाता है, तो आप चीजों को धीमा कर रहे हैं, यही कारण है कि मैं केवल तभी सुझाव देता हूं यदि कई वर्गों में इकाई प्रबंधक की आवश्यकता हो। उस प्रदर्शन टिप्पणी पर – superdweebie
अच्छा बिंदु। मुझे यह देखने में मदद करने के लिए धन्यवाद। –
- 1. PHP में <<< ईओडी का उपयोग क्या है?
- 2. <% $, <% @, <% =, <% # ... सौदा क्या है?
- 3. कैसे बचें << - असाइन
- 4. का अर्थ << = और | =
- 5. >>>>,> |, ||, | <, <, <<
- 6. 'ऑपरेटर <<' के लिए 'std :: cout <<' में अस्पष्ट अधिभार <<
- 7. ईजेएस: <% = बनाम <% -
- 8. cout << स्ट्रिंगस्ट्रीम
- 9. <: <, <% <, =: = कंपाइलर में काम का स्केल कार्यान्वयन वास्तव में कैसे करता है?
- 10. PHP व्यंजक <<< EOB
- 11. PHP क्या <<< मतलब है?
- 12. पीएचपी: <<< ob_start बनाम
- 13. अंतर << a_value
- 14. प्रश्न <<
- 15. "<<<" ऑपरेटर का नाम क्या है?
- 16. मैं अदालत << MyClass
- 17. DOMDocument को <as & lt
- 18. ऑपरेटर बनाना << आभासी?
- 19. </p> <pre><code>NSLog(@"%u", myData.length); </code></pre> <p>तो का उपयोग करके megs
- 20. Enumerable.ToList <>() <>
- 21. कॉलिंग ऑपरेटर << gdb
- 22. ओवरलोडिंग ऑपरेटर << - सी ++
- 23. <? के बजाय php <?
- 24. ऑपरेटर << ओवरलोडिंग ओस्ट्रीम
- 25. <%# %> बनाम <%= %>
- 26. <<..>> = आउटपुट
- 27. एएसपी.Net में, <% = और <% #
- 28. << ऑपरेटर और प्रत्यावर्तन
- 29. <%! %> और <% %>
- 30. जावा में, बिट्सफिफ्ट का उपयोग करते समय, 1 << 32! = 1 << 31 << 1 क्यों होता है?
बस एक सवाल है, क्योंकि आप सिद्धांत ओआरएम के बारे में बात कर रहे हैं, क्या आपको इकाई को अपने फ़ील्ड स्तर पर डाउन करने में परेशानी हो रही है? :) – Sam