उप फ़ोल्डर और नामस्थान कक्षाओं के लिए कैसे


11

Drupal 7 में मैं एक मॉड्यूल दूसरे मॉड्यूल के अंदर रख सकता हूं। क्या यह अभी भी ड्रुपल 8 में है और मैं उप मॉड्यूल के अंदर क्लासेस का नाम कैसे रखूंगा?

एक और बात जो मैं ड्रुपल 7 में कर सकता हूं, वह यह है कि अपने मॉड्यूल्स को ग्रुप करने के लिए मॉड्यूल फोल्डर के अंदर सब फोल्डर बनाएं।

उदाहरण:

साइटें
--- / सभी
--- / --- / मॉड्यूल
--- / --- /
/ संग्रह_आलफ़ा
--- / --- / --- / --- / मॉड्यूल_ए --- / - - / --- / --- / मॉड्यूल_बी --- / --- / संग्रह_बेटी
---
/ --- / --- / --- / मॉड्यूल_x
--- / / --- / --- / माड्यूल_य

क्या यह ड्रुपल 8 में अभी भी संभव है? यदि हाँ, तो मुझे अपनी कक्षाओं को कैसे नामांकित करना होगा ताकि ऑटोलैडर इसे सही फ़ोल्डर संरचना में हल कर सके?

उदाहरण: Drupal \ Collection_Alpha \ मॉड्यूल_a \ myClass1?


2
मुझे पूरा यकीन है कि नाम स्थान का रिज़ॉल्यूशन "/ पथ / से / मॉड्यूल / src" के रूप में पंजीकृत होगा, इसलिए आपको 'सब' मॉड्यूल के लिए कुछ अलग करने की आवश्यकता नहीं होनी चाहिए। यानी मुख्य मॉड्यूल हो जाएगा Drupal\my_moduleमें 'my_module / src', उप मॉड्यूल हो जाएगा Drupal\my_submoduleमें 'my_module / मॉड्यूल / my_submodule / src', और इतने पर
क्लाइव

धन्यवाद क्लाइव, यह समझ में आता है! उप फ़ोल्डर के बारे में क्या? किसी भी विचार अगर यह अभी भी समर्थित है और एक वर्ग को ऑटोलडिंग के साथ कैसा लगेगा?
डस्टिनमोरिस

जवाबों:


7

@ क्लाइव सही है।

नाम स्थान हमेशा होता है Drupal\{module_name} । जहां मॉड्यूल रहता है वह अप्रासंगिक है (जब तक यह कहीं है जहां द्रुपाल इसे पा सकते हैं)। वह नाम स्थान हमेशा इंगित करता है $path_to_module/src

यह संभवतः किसी अन्य तरीके से काम नहीं करेगा। अलग-अलग साइटों में एक अलग संरचना और अलग-अलग स्थानों में मॉड्यूल होते हैं, लेकिन समान कोड को काम करना पड़ता है जहां कोई फर्क नहीं पड़ता।


धन्यवाद क्लाइव और बर्दिर! मुझे लगता है कि मेरे पास एक और अनुवर्ती प्रश्न है: क्या एक अतिरिक्त नामस्थान को पंजीकृत करना संभव है जो मॉड्यूल फ़ोल्डर को भी इंगित करता है? जैसे: DrupalModules \ {mod_name} को $ path_to_module / src पर इंगित करने के लिए? मैं बेहतर तरीके से यह समझने के लिए कह रहा हूं कि एक दिन डी 8 में जाने पर हमारी कक्षाओं को कैसे डिज़ाइन किया जाए ताकि थोड़ा घर्षण हो।
डस्टिनमोरिस

1
यदि कक्षाएं Drupal-specific हैं (यानी आप एक स्टैंडअलोन लाइब्रेरी नहीं लिख रहे हैं), तो यह यकीनन बेहतर होगा कि उन्हें \Drupalसंगति के लिए रखा जाए। लेकिन फिर भी दिलचस्प सवाल है, मैं आपको इसे एक अलग प्रश्न के रूप में पूछने के लिए प्रोत्साहित करूँगा। वास्तव में अगर तुम नहीं, मैं शायद :) जाएगा
क्लाइव

1
आप शायद, हां, देख सकते हैं system_register () और drupal_classloader_register ()। वे सहायक हार्डकोड "Drupal \" काम करते हैं, लेकिन आप सीधे class_loader सेवा प्राप्त कर सकते हैं। लेकिन जैसा कि @ क्लीव ने कहा, मैं इसे करने की सिफारिश नहीं करूंगा, वास्तव में ऐसा करने का कोई कारण नहीं है, जब तक कि आप बाहरी पुस्तकालय में शामिल न हों।
बर्दिर

Coolio, कि समझ में आता है! धन्यवाद दोस्तों! @ क्लाइव: जैसा कि आपने सुझाव दिया था कि मैंने drupal.stackexchange.com/questions/142309/…
dustinmoris

आप संरचना को देखने के लिए पहले से ही मोंगॉडब मॉड्यूल की जांच कर सकते हैं।

6

नामस्थान PSR-4 ऑटोलॉड पर आधारित है, विनिर्देश http://www.php-fig.org/psr/psr-4 की जाँच करें

यदि आप उप-मॉड्यूल चाहते हैं, तो आप अगले फ़ोल्डर संरचना का उपयोग कर सकते हैं। d8:

/modules
   my_module/
     src/
      Controller/
        A.php
     modules/
       my_sub_module/
         src/
          Controller/
            B.php

"My_module" के लिए नामस्थान:

Drupal\my_module\Controller\A

"My_sub_module" के नाम:

Drupal\my_sub_module\Controller\B

देखें PSR-4 नामस्थान और Drupal 8 में Autoloading अधिक जानकारी के लिए।


धन्यवाद dmouse प्रारंभ में मैंने Drupal.org पर जुड़े संसाधन पर अपना प्रश्न पोस्ट किया और अब मैंने इस धागे को इंगित करने के लिए अपने स्वयं के प्रश्न को संपादित किया है;)
dustinmoris
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.