2010-12-30 19 views
13

मैं इस प्रश्न को अन्य पुस्तकालयों/ढांचे के साथ ZendFramework एकीकरण में रुचि रखने वालों के लिए एक गाइड बनाना चाहता हूं। StackOverflow पर खोज विषय पर एक व्यापक दृश्य नहीं देता है।अन्य ढांचे के साथ ज़ेंडफ्रेमवर्क एकीकरण

सवाल यह है कि: आप अपने वर्तमान जेडएफ-आधारित प्रोजेक्ट में किस पुस्तकालय/ढांचे का उपयोग करते हैं? जेडएफ-आधारित परियोजना वास्तुकला के लिए सबसे अच्छा अभ्यास क्या हैं?

मेरा मतलब यह नहीं है कि पहले से ZF का एक हिस्सा है। कृपया अतिरिक्त फ्रेमवर्क जो आपने एकीकृत किया है (जैसे RuckUsing, Smarty, या Doctrine) का विवरण दें। यह किसी भी जीयूआई ढांचे (शायद आप एक सीएसएस ढांचे का उपयोग करते हैं), साथ ही जेएस ढांचे (केवल jQuery या prototype, बल्कि कुछ उन्नत संरचनाओं) पर भी लागू होता है।

मुख्य आवश्यकता: इसे ज़ेंडफ्रेमवर्क प्रोजेक्ट होना चाहिए।

प्रदर्शन अनुकूलन का वर्णन करने वाले उत्तरों को अतिरिक्त बोनस दिया जाएगा।

अद्यतन

@ BryanM के रूप में जानकारीपूर्ण के रूप में हर जवाब के अतिरिक्त इनाम पुरस्कार के लिए विचार किया जाएगा।

+0

+1 RuckUsing- के लिए लिंक के लिए इसके बारे में मूल रूप से कभी नहीं सुना – Mchl

+0

खैर यह (यदि पीएचपी आवेदन) अगर यह आपको बूटस्ट्रैप प्रक्रिया को लागू कर सकते हैं करने पर निर्भर करता है और अगर autoloader के एक दूसरे के साथ काम कर सकते हैं, वहाँ ज़ेंड फ्रेमवर्क और सिद्धांत एकीकरण पर बहुत सारे ट्यूटोरियल, दुर्भाग्यवश मुझे किसी ऐसे व्यक्ति को नहीं मिला जो वर्तमान सिद्धांत बीटा पर लागू होता है। जेएस और सीएसएस के साथ मामला उस संबंध में PHP अनुप्रयोग के उपयोग से पूरी तरह से encapsulated किया जा सकता है (imho) - किसी भी मामले में एक दिलचस्प बिंदु बढ़ाने के लिए +1! – Hannes

+0

@ हेन्स जैसा कि मैंने इस सवाल में कहा है, वास्तव में यह नहीं है कि विभिन्न ढांचे को एकीकृत कैसे किया जाए, बल्कि आवेदन के लिए कौन सी ढांचे का चयन किया जाए। बूटस्ट्रैपिंग और कस्टम प्लगइन्स लिखना ठीक है, जब तक कि यह पुन: प्रयोज्य है, और मैं पूरी तरह से यह लाभ लेता हूं। लेकिन स्पेगेटी जैसी वास्तुकला बेकार है, इसलिए मैं परिपक्व सुविधाओं (सीआई, डीबी माइग्रेशन इत्यादि) के साथ असली दुनिया के अनुप्रयोगों के अच्छे उदाहरण देखना चाहता हूं। –

उत्तर

9

मैं अपने ज़ेंड फ्रेमवर्क परियोजनाओं में सिद्धांत 2 का उपयोग करता हूं। इसका उपयोग करना आसान है और निर्बाध रूप से फिट बैठता है। एकीकृत करने के लिए बुनियादी कदम हैं:

  • कि application.ini में विन्यास विकल्प का उपयोग कर एक सिद्धांत 2 EntityManager प्रारंभ हो जाएगा एक संसाधन प्लगइन लिखें। बेंजामिन एबरलेई के DoctrineExtensions में एक का उदाहरण मिल सकता है।
  • EntityManager संदर्भ को संग्रहीत करने के लिए वैश्विक रजिस्ट्री (Zend_Registry) पर भरोसा करने के बजाय, मैं अपने नियंत्रकों को उदाहरण देने के लिए described here के रूप में एक साधारण डिप्लेसी इंजेक्शन समाधान पर भरोसा करता हूं।
  • मैं टाइमस्टैम्प अपडेट या डेटा सत्यापित करने जैसी चीजों को करने के लिए पुनः उपयोग करने योग्य 'व्यवहार' वर्ग बनाने के लिए सिद्धांत की घटना प्रणाली पर भरोसा करता हूं।
  • मैं अपनी सभी संस्थाओं और व्यावसायिक वस्तुओं को अपने एप्लिकेशन के 'मॉडल' फ़ोल्डर (इसके स्वयं के नामस्थान के तहत) में रखता हूं, और मेरे library फ़ोल्डर में बाकी सब कुछ रखता हूं। चीजें व्यवस्थित रखने के लिए मैं PHP 5.3 नामस्थानों का भारी उपयोग करता हूं।
  • मैं कमांड लाइन के माध्यम से डेटाबेस में अद्यतनों को संभालने के लिए डॉक्टरेट की नई-आईश माइग्रेशन लाइब्रेरी का उपयोग करता हूं।
  • मैं लाइब्रेरी निर्भरताओं, स्वचालित इकाई परीक्षण और चलने वाले माइग्रेशन को संभालने के लिए Phing में एक विस्तृत निर्माण प्रक्रिया बनाने की अत्यधिक अनुशंसा करता हूं जिसे स्रोत नियंत्रण या सीआई सर्वर में एकीकृत किया जा सकता है। यदि आप उन ढांचे में से किसी एक का उपयोग कर रहे हैं तो जावास्क्रिप्ट या सीएसएस को संकलित करने के लिए भी अच्छा है।

ये अभ्यास सिद्धांत के लिए सिर्फ अच्छे नहीं हैं, जब भी आप किसी साइट के आर्किटेक्चर को बनाने की कोशिश कर रहे हों तो वे आसान होंगे। मुझे लगता है कि विस्तार की ज़ेंड की सबसे बड़ी संपत्ति संसाधन प्लगइन्स और एक्शनहेल्पर/कंट्रोलर प्लगइन्स हैं।

+0

+1 क्या आप क्रॉन नौकरियों का उपयोग करते हैं? जेएस/सीएसएस ढांचे? कोई प्रदर्शन अनुकूलन? –

+0

क्रॉन नौकरियां उन चीजों के लिए ठीक हैं जिन्हें क्रॉन की आवश्यकता होती है। जेडएफ ऐप्स के लिए विशिष्ट नहीं है। सिद्धांत 2 कैश में पूर्व-संकलित मेटाडेटा को संग्रहीत करने पर निर्भर करता है, और आलसी लोडिंग के लिए प्रॉक्सी क्लास फ़ाइलों को स्वतः उत्पन्न करता है। अनिवार्य रूप से, रन-टाइम पर कुछ भी न करें जो रन -टाइम किया जा सकता है। सिद्धांत के लिए –

+0

+1। –

3

एचटीएमएल स्वच्छता के लिए HtmlPurifier भी याद रखें, आम तौर पर स्वीकार्य टैग की श्वेतसूची के आधार पर उपयोगकर्ता द्वारा प्रदान किए गए मार्कअप को पार्स करना, और मानकों-अनुरूप आउटपुट मार्कअप का उत्पादन करना।

इसका उपयोग एक्सएसएस हमलों के खिलाफ रक्षा की पहली पंक्ति के रूप में किया जा सकता है। ध्यान दें कि इस उद्देश्य के लिए Zend_Filter_StripTagsnot sufficient है।

2
  • ZendX_JQuery (एक ट्यूटोरियल zendcast.com पर उपलब्ध है)।

  • हालांकि, यह एक रूबी एप्लिकेशन है, हम webistrano का उपयोग PHP परियोजनाओं को तैनात करने के लिए करते हैं।

  • यदि आपके वेब एप्लिकेशन को बड़े पैमाने पर पूर्ण-पाठ खोज करना है, तो मैं zend (sorgalla.com) के साथ संयोजन में स्फिंक्स का उपयोग करूंगा।

  • यदि आप उन नए नोएसक्यूएल-डाटाबेस जैसे मोंगोडीबी का उपयोग करना चाहते हैं, तो आप morph का उपयोग उच्च स्तरीय PHP-पुस्तकालय के रूप में कर सकते हैं। मैंने बस फाइलों को 'लाइब्रेरी' में कॉपी किया और फ़ाइलों को लोड करने के लिए ऑटोलोडर को बताया: autoloaderNamespaces [] = "Morph_"।

  • ZF_Debug विकास के लिए एक अच्छा डिबगिंग टूलबार है।

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