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


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.