2015-02-10 5 views
9

मैं अपना पहला लैरावेल (5) एप्लिकेशन विकसित करने की कोशिश कर रहा हूं जिसे प्लगइन द्वारा बढ़ाया जा सकता है। मैं प्लगइन आर्किटेक्चर के बारे में बहुत कुछ पढ़ रहा हूं, लेकिन मैं किसके साथ संघर्ष कर रहा हूं सर्वोत्तम या लैरवेल में ऐसी परियोजना को व्यवस्थित करने का पसंदीदा तरीका है। मैं यहां किसी भी मदद और सलाह के लिए बहुत आभारी हूं क्योंकि मैं गलत रास्ते पर सेट नहीं करना चाहता हूं।लार्वेल 5 परियोजना संरचना (प्लगइन सिस्टम)

/ Plugins 
    - PluginManager.php 

    /Contracts 
     - PluginInterface.php 

    /Plugins 

     /ExamplePlugin1 
      - ExamplePlugin1.php 

     /ExamplePlugin2 
      - ExamplePlugin2.php 

प्रश्न 1::कहाँ जड़/प्लगइन्स निर्देशिका के लिए सबसे अच्छी जगह हो जाएगा स्थित हो

यहाँ कैसे मैं संरचना के बारे में सोच रहा हूँ और इस को लागू है? सीधे ऐप/रूट फ़ोल्डर में या ऐप/एचटीपी की तरह कहीं?

ऐप स्टार्टअप पर, मैं प्लगइन मैनेजर क्लास को प्लगइन्स/प्लगइन्स/उप निर्देशिका को स्कैन करने के लिए चाहता हूं, जहां सभी स्थापित प्लगइन्स रहेंगे। उस बिंदु पर, PluginManager उन प्लगइन कक्षाओं का प्रतिबिंब उदाहरण बनाएगा और उन्हें एक सरणी में संग्रहीत करेगा ताकि वह बाद में उनके माध्यम से लूप कर सके और यदि वे मौजूद हों तो उन पर कॉल विधियां कर सकते हैं।

प्रश्न 2: मैं PluginMananger मैं एक सेवा प्रदाता और फसाड इस के लिए उपयोग करना चाहिए सभी अनुरोधों के लिए उपलब्ध हो सकता है, के रूप में चाहते हैं?

प्रश्न 3: क्या यह विधि कुशल है या कोई भी वैकल्पिक समाधान प्रदान कर सकता है?

ये सभी प्लगइन प्लगइन इंटरफेस इंटरफेस को कार्यान्वित करेंगे ताकि प्लगइनमैनगर क्लास कॉल कर सके, उदाहरण के लिए, सभी प्लगइन पर एक init() फ़ंक्शन।

अपने समय के लिए धन्यवाद

+0

क्यों आपके प्लगइन्स संगीतकार पैकेज नहीं हो सकते हैं - और पैकेज सिस्टम का उपयोग करें? – Laurence

+0

@TheShiftExchange आपके उत्तर के लिए धन्यवाद। यह परियोजना कई अंतिम उपयोगकर्ता के सर्वर पर स्थापित की जाएगी और मैं प्लगइन सिस्टम को जितना संभव हो सके उपयोग करना आसान बनाना चाहता हूं। इस कारण से, मैं प्लगइन को _Plugins/Plugins_ निर्देशिका में खींचने और छोड़ने जितना आसान बनाना चाहता था और प्लगइनमैनेजर क्लास स्वचालित रूप से उनका पता लगाता/लोड करता हूं।क्या कंपोज़र पैकेज का उपयोग करते हुए मैं इसे आसान बना सकता हूं? – dpstudio

+0

मैं @TheShiftExchange से सहमत हूं। पैकेज लार्वेल की कार्यक्षमता को विस्तारित करने का मानक तरीका हैं। और उपयोगकर्ताओं को उनका उपयोग करने में सक्षम होना चाहिए क्योंकि लगभग हर लार्वा देव जल्द या बाद में पैकेज का उपयोग करता है। एक नया क्यू पेश करने से उन्हें funktionality का विस्तार करने का एक और तरीका "सीखने" के लिए मजबूर किया जाएगा .. – nozzleman

उत्तर

1

प्रश्न 1

यह करने के लिए सबसे आसान तरीका है, एक निर्देशिका "एप्लिकेशन/प्लगइन्स" ("एप्लिकेशन/Http/प्लगइन्स" केवल तभी बनाने के लिए है अपने प्लगइन लैरवेल कोर एप्लिकेशन या रूटिंग @RTM: के लिए विशिष्ट हैं "कंसोल और एचटीपी निर्देशिकाओं के बारे में सोचें, जो आपके आवेदन के" कोर "में एपीआई प्रदान करते हैं।")।

प्रश्न 2

हाँ! @see: performance issue using deferred providers

प्रश्न 3

हो सकता है आप अपने आवेदन जड़ हर अनुरोध पर स्कैनिंग "एप्लिकेशन/प्लगइन्स" से बचने के लिए plugins.lock का एक प्रकार कर सकते हैं?

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