एक कठिन निर्भरता क्या है और एक नरम निर्भरता क्या है?


18

Magento 2 (किसी भी स्थिर संस्करण) में आप इस कमांड को चला सकते हैं bin/magento info:dependencies:show-modulesऔर आपको अपने एप्लिकेशन की जड़ में एक csv फाइल मिलेगी modules-dependencies.csvजो इस तरह दिखने वाले सभी मॉड्यूल निर्भरता के साथ कहलाती है :

यहाँ छवि विवरण दर्ज करें

हार्ड डिपेंडेंसी क्या है और सॉफ्ट डिपेंडेंसी क्या है? प्रत्येक का एक उदाहरण मदद करेगा।



@KetanKpBorada। धन्यवाद। अच्छी पठन सामग्री, लेकिन कठिन और नरम निर्भरता दोनों का एक उदाहरण मदद करेगा, यदि आपके पास ऐसा कोई उदाहरण है, तो कृपया इसे उत्तर के रूप में रखें।
मेरियस

जवाबों:


13

तीन अलग-अलग निर्भरता पार्सर (कार्यान्वयन Magento\Setup\Module\Dependency\ParserInterface) हैं:

  • कोड: कोड में प्रयुक्त वर्गों के लिए लग रहा है
  • config / xml: मॉड्यूल घोषणा में निर्भरता के लिए दिखता है
  • कंपोज़र / जसन: कंपोज़र.जॉन में निर्भरता की तलाश करता है

हार्ड और सॉफ्ट डिपेंडेंसी के बीच अंतर करने वाला एकमात्र कंपोजर पार्सर है (देखें: Magento \ Setup \ Module \ Dependency \ Parser \ संगीतकार \ Json :: extractD dependencies () )

एक नरम निर्भरता एक पैकेज है, जो "सुझाव" में सूचीबद्ध है, एक कठिन निर्भरता "आवश्यकता" में एक पैकेज है।

डिफ़ॉल्ट निर्भरता प्रकार कठिन है , इसका मतलब है कि अन्य पार्सरों द्वारा पाई गई निर्भरताएं हमेशा कठिन होती हैं ( मैगेंटो \ सेटअप \ मॉड्यूल \ निर्भरता \ रिपोर्ट \ निर्भरता \ डाटा \ निर्भरता :: __ निर्माण () देखें )।


12

एक सरल और स्पष्ट विवरण (Magento U फंडामेंटल कोर्स से):

कठिन निर्भरता

लागू करता है कि एक मॉड्यूल अन्य मॉड्यूल के बिना कार्य नहीं कर सकता है जिस पर यह निर्भर करता है।

कठिन निर्भरताओं के उदाहरण में शामिल हैं:

  • मॉड्यूल में कोड होता है जो सीधे दूसरे मॉड्यूल (उदाहरणों, वर्ग स्थिरांक, स्थिर विधियों, सार्वजनिक वर्ग गुणों, इंटरफेस और लक्षणों) से तर्क का उपयोग करता है
  • मॉड्यूल में ऐसे तार होते हैं जिनमें कक्षा के नाम, विधियों के नाम, वर्ग स्थिरांक, वर्ग गुण, इंटरफ़ेस और अन्य मॉड्यूल से लक्षण शामिल होते हैं।
  • मॉड्यूल किसी अन्य मॉड्यूल में घोषित वस्तु को क्रमबद्ध करता है।
  • मॉड्यूल किसी अन्य मॉड्यूल द्वारा उपयोग किए गए डेटाबेस तालिकाओं का उपयोग करता है या संशोधित करता है।

Magento_AdminNotification एक कठिन निर्भरता है Magento_Store

नरम निर्भरता

लागू करता है कि एक मॉड्यूल अन्य मॉड्यूल के बिना कार्य कर सकता है जिस पर यह निर्भर करता है।

नरम निर्भरताओं के उदाहरण में शामिल हैं:

  • मॉड्यूल सीधे दूसरे मॉड्यूल की उपलब्धता की जांच करता है।
  • मॉड्यूल दूसरे मॉड्यूल के कॉन्फ़िगरेशन का विस्तार करता है।
  • मॉड्यूल दूसरे मॉड्यूल के लेआउट का विस्तार करता है।

Magento_AdvancedPricingImportExportMagento_CatalogImportExportइस तरह कोड के साथ एक नरम निर्भरता है :

if (!$model instanceof \Magento\CatalogImportExport\Model\Export\Product\Type\AbstractType) {
    throw new \Magento\Framework\Exception\LocalizedException(
        __(
            'Entity type model must be an instance of'
            . ' \Magento\CatalogImportExport\Model\Export\Product\Type\AbstractType'
        )
    );
}

यदि एक मॉड्यूल दूसरे मॉड्यूल से कोड का उपयोग करता है, तो यह निर्भरता को स्पष्ट रूप से घोषित करना चाहिए।

संपादित करें: सिर्फ देखा है कि यह भी स्पष्ट रूप से सरकारी दस्तावेज़ में समझाया गया है: https://devdocs.magento.com/guides/v2.3/architecture/archi_perspectives/components/modules/mod_depend.html

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.