यदि मैं सिद्धांत 2 के साथ ज़ेंड फ्रेमवर्क 1.10 को एकीकृत करता हूं, जहां मैं अपना सिद्धांत मॉडल/संस्थाएं और प्रॉक्सी डालता हूं? मैंने /application
या /library
निर्देशिकाओं के बारे में सोचा। अगर मैं /library
निर्देशिका में डालता हूं, तो क्या वहां से जेडएफ ऑटोलोडिंग कक्षाओं में हस्तक्षेप होगा क्योंकि कक्षाएं PHP 5.3 नामस्थान बनाम पीईआर स्टाइल नेमस्पेस का उपयोग कर रही हैं।जेडएफ/सिद्धांत 2 को एकीकृत करना: मैं अपने मॉडल/संस्थाओं और प्रॉक्सी कक्षाओं को कहां रखूं
उत्तर
मैं ऐसे एप्लिकेशन पर काम कर रहा हूं जो ZF1.10 के साथ सिद्धांत 2 को एकीकृत करता है। आपको डॉक्टर ऑटो लोडर का उपयोग करने की आवश्यकता नहीं है।
1) अपने application.ini फ़ाइल में (यदि आप अपने पुस्तकालय फ़ोल्डर में सिद्धांत स्थापित किया है यह सोचते हैं (Zend फ़ोल्डर के रूप में ही) निम्न पंक्ति जोड़ें:
autoloadernamespaces.doctrine = "Doctrine"
2) एक सिद्धांत या entitymanager संसाधन बनाएँ। आपकी आईएनआई फ़ाइल में:
resources.entitymanager.db.driver = "pdo_mysql"
resources.entitymanager.db.user = "user"
resources.entitymanager.db.dbname = "db"
resources.entitymanager.db.host = "localhost"
resources.entitymanager.db.password = "pass"
resources.entitymanager.query.cache = "Doctrine\Common\Cache\ApcCache"
resources.entitymanager.metadata.cache = "Doctrine\Common\Cache\ApcCache"
resources.entitymanager.metadata.driver = "Doctrine\ORM\Mapping\Driver\AnnotationDriver"
resources.entitymanager.metadata.proxyDir = APPLICATION_PATH "/../data/proxies"
resources.entitymanager.metadata.entityDir[] = APPLICATION_PATH "/models/entity"
3) अगला, आपको इसे बूटस्ट्रैप करने की आवश्यकता होगी। मैंने अपने संसाधन फ़ोल्डर में एक संसाधन वर्ग जोड़ा। सुनिश्चित करें कि आप अपने INI फ़ाइल में फ़ोल्डर को मैप करें:
pluginPaths.Application_Resource_ = APPLICATION_PATH "/resources"
फिर अपने संसाधन वर्ग ...
class Application_Resource_EntityManager
extends Zend_Application_Resource_ResourceAbstract
{
/**
* @var Doctrine\ORM\EntityManager
*/
protected $_em;
public function init()
{
$this->_em = $this->getEntityManager();
return $this->_em;
}
public function getEntityManager()
{
$options = $this->getOptions();
$config = new \Doctrine\ORM\Configuration();
$config->setProxyDir($options['metadata']['proxyDir']);
$config->setProxyNamespace('Proxy');
$config->setAutoGenerateProxyClasses((APPLICATION_ENV == 'development'));
$driverImpl = $config->newDefaultAnnotationDriver($options['metadata']['entityDir']);
$config->setMetadataDriverImpl($driverImpl);
$cache = new Doctrine\Common\Cache\ArrayCache();
$config->setMetadataCacheImpl($cache);
$config->setQueryCacheImpl($cache);
$evm = new Doctrine\Common\EventManager();
$em = Doctrine\ORM\EntityManager::create($options['db'],$config,$evm);
return $em;
}
}
सिद्धांत 2 इकाई प्रबंधक अपने आवेदन करने के लिए अब उपलब्ध है। अपने नियंत्रक में आप यह इतना तरह हड़पने कर सकते हैं:
$bootstrap = $this->getInvokeArg('bootstrap');
$em = $bootstrap->getResource('entitymanager');
मुझे यकीन है कि इस में मदद मिलेगी किसी :)
मैं मॉडल को उसी निर्देशिका में रखूंगा जहां "सामान्य" ज़ेंड फ्रेमवर्क मॉडल जीवन। /models
आप इस जगह पर मॉडल जेनरेट करने के लिए सिद्धांत बता सकते हैं, और उन्हें "Default_Model"
या जो कुछ भी उपसर्ग कर सकते हैं।
बाहर चेक Zend फ्रेमवर्क के बारे में जॉन Lebenshold ब्लैकबेरी से एक और सिद्धांत
मैं सिद्धांत 2 जो पीएचपी का उपयोग करता है 5.3 "सही" नामस्थान का उपयोग कर रहा हूँ, मुझे नहीं लगता है कि मैं ऐसा कर सकते हैं ? मैं 'APPLICATION_PATH'' से अपनी ''संस्थाएं' और 'प्रॉक्सी' 'लोड करने के लिए ज़ेंड ऑटोलोडर को कैसे बता सकता हूं?मैं अपनी संस्थाओं और प्रॉक्सी को 'लाइब्रेरी/एप्लिकेशन' में डालकर काम करने में कामयाब रहा, जहां वे पथ शामिल हैं, इसलिए यह –
सिद्धांत रूप में, आप तो कहीं भी नामस्थान सही हल के रूप में डाल सकता है, जब तक।
/application/models/MyApp/Entities
/application/models/MyApp/Proxies
लोड सिद्धांत के classloader का उपयोग कर 'MyApp':
मैं इस संरचना सुझाव है। मुझे ज़ेंड लोडर के साथ सिद्धांत लोडर का उपयोग करके कोई विवाद नहीं हुआ है (यदि आपके पास कक्षाएं हैं जो आपके नामस्थान फ़ोल्डर के अंदर पीयर सम्मेलन का उपयोग करती हैं, तो आपको अभी भी ज़ेंड लोडर का उपयोग करने की आवश्यकता होगी)।
याद रखें कि 'मॉडल' केवल आपकी इकाई वर्गों से अधिक हो सकता है। मेरी मॉडल परत में इंटरफेस, कारखानों, सत्यापनकर्ता और सेवा वस्तुएं शामिल हैं। इसके लिए, कुछ भी जो विशिष्ट विशिष्ट विशिष्ट तर्क तर्क मॉडल मॉडल में जाना चाहिए।
काम करता है आप ज़ेंड ऑटोलोडर के साथ काम करने के लिए डॉक्टर क्लास लोडर को कैसे कॉन्फ़िगर करते हैं? मैं वर्तमान में अपनी संस्थाओं को '/ पुस्तकालय/एप्लिकेशन' फ़ोल्डर में रख रहा हूं। फिर application.ini में 'autoloaderNamespaces [] = एप्लिकेशन' जोड़ा गया। यह ठीक काम करता है क्योंकि ज़ेंड लोडर PHP 5.3 नेमस्पेस के साथ काम करने में सक्षम प्रतीत होता है, हालांकि मैं इसे 'include_path' के बाहर कहीं से कक्षाओं को लोड करने के लिए नहीं प्राप्त कर सकता। यह जानना अच्छा होगा कि मैं इसे डॉक्टर क्लास लोडर और ज़ेंड के साथ कैसे कर सकता हूं (फ़ाइलों को खोजने के लिए एक कस्टम स्थान निर्दिष्ट करना) –
मैनुअल के इस अनुभाग को देखें: http://www.doctrine-project.org/projects/orm/ 2.0/डॉक्स/संदर्भ/कॉन्फ़िगरेशन/एन # बूटस्ट्रैपिंग: क्लास-लोडिंग: गिट मूल रूप से, आप किसी भी PHP 5.3 नेमस्पेस को लोड करने के लिए सिद्धांत के क्लासलोडर का उपयोग कर सकते हैं। बस बेस नेमस्पेस (जैसे 'सिद्धांत' या 'माईएप', और फ़ोल्डर के लिए पथ का नाम प्रदान करें। फिर आप 'उपयोग' कीवर्ड के साथ किसी भी नामस्थान वर्ग आयात कर सकते हैं। –
मुझे पता है, अब मेरा प्रश्न है कि मैं कैसे मेरे ज़ेंड एप्लिकेशन में क्लास लोडर के रूप में डॉक्टर क्लास लोडर जोड़ें? –
- 1. मैं अपने मोजे कहां रखूं?
- 2. मैं अपने पायथन परियोजना में उपयोगिता कार्यों को कहां रखूं?
- 3. मैं "WSGIPass प्राधिकरण" कहां रखूं?
- 4. मैं .egg (पायथन) कहां रखूं?
- 5. मैं अपने मणि में गैर-रूबी फाइल कहां रखूं?
- 6. मैं अपने रिस्क-रीट्री विफलता बैकएंड कोड कहां रखूं?
- 7. मैं अपने मैवेन 2 प्रोजेक्ट में वेबलॉगिक-application.xml कहां डालूं?
- 8. स्प्रिंग वेबफ्लो 2 और अपाचे टाइल्स को एकीकृत करना
- 9. गुइसे और ओएसजीआई सेवाओं को एकीकृत करना
- 10. प्ले फ्रेमवर्क में सेवा कक्षाओं को कहां रखा जाए?
- 11. मैं अपने मैवेन 2 बिल्ड को कैसे बढ़ा सकता हूं?
- 12. पेपैल चेकआउट को एकीकृत करना
- 13. मैं अपने डिफस्ट्रक्ट को फ़ाइल में कैसे जारी रखूं और पुनर्स्थापित कैसे करूं?
- 14. आंतरिक कक्षाओं को कहां रखा जाए?
- 15. मैं प्रेस जावास्क्रिप्ट को दबाकर दबाए रखूं?
- 16. WinForms एप्लिकेशन में "सहायता" को एकीकृत करना
- 17. "फॉलबैक" कक्षाओं को कार्यान्वित करना
- 18. सिम्फनी 2 प्रॉक्सी को सैमफोनी 1.4 प्रोजेक्ट
- 19. मैं कोडिनेटर (PHP) के लिए स्थिरांक फ़ाइल कहां रखूं?
- 20. एक्सप्रेस में, मैं अपना sitemap.xml और robots.txt फ़ाइलों को कहां रखूं?
- 21. मुझे अपने डेटामैटप्लेट को कहां परिभाषित करना चाहिए?
- 22. आईओएस - क्रेडिट कार्ड भुगतान को एकीकृत करना
- 23. मैं अपने प्रोजेक्ट में अतिरिक्त फ़ोल्डरों को हटाने से MSDeploy को कैसे रखूं?
- 24. प्ले फ्रेमवर्क 2.0 और स्प्रिंग फ्रेमवर्क को एकीकृत करना
- 25. मैं एक्ट-ए-टैगगेल-ऑन के लिए कॉन्फ़िगरेशन कहां रखूं?
- 26. मैं अपने ऐप को अपने विजेट के साथ कैसे एकीकृत कर सकता हूं?
- 27. मैं ActionMailer विचारों के लिए सहायक तरीके कहां रखूं?
- 28. अगर मैं किसी को अपने कोड पर टिप्पणी करना चाहता हूं तो मैं कहां जाऊं?
- 29. मल्टीथ्रेडेड संसाधन पहुंच - मैं अपनी ताले कहां रखूं?
- 30. अन्य वातावरण में प्रोलॉग को एकीकृत करना
और रिपॉजिटरीज़ के बारे में क्या? @Entity (repositoryClass = "Entities \ ArticlesRepository") मैं उन्हें लोड नहीं कर सकता। :( – cirpo
एक एफवाईआई के रूप में, मुझे अभी तक इस सुविधा का उपयोग करने का मौका नहीं मिला है (Magento के साथ बहुत व्यस्त हो गया है)। दस्तावेज़ों के मुताबिक, repositorClass के लिए मान एक पूरी तरह से योग्य वर्ग नाम होना चाहिए जो सिद्धांत \ ORM \ EntityRepository को बढ़ाता है। – David
इसके अलावा, आपको अवगत होना चाहिए कि आपके पास उदाहरण एक नामांकित वर्ग है। यदि आप नामस्थान का उपयोग नहीं कर रहे हैं, वहां पूर्ण वर्ग का नाम डालने का प्रयास करें (उदाहरण: Module_Model_Entities_ArticlesRepository)। – David