एक सरल और स्पष्ट विवरण (Magento U फंडामेंटल कोर्स से):
कठिन निर्भरता
लागू करता है कि एक मॉड्यूल अन्य मॉड्यूल के बिना कार्य नहीं कर सकता है जिस पर यह निर्भर करता है।
कठिन निर्भरताओं के उदाहरण में शामिल हैं:
- मॉड्यूल में कोड होता है जो सीधे दूसरे मॉड्यूल (उदाहरणों, वर्ग स्थिरांक, स्थिर विधियों, सार्वजनिक वर्ग गुणों, इंटरफेस और लक्षणों) से तर्क का उपयोग करता है ।
- मॉड्यूल में ऐसे तार होते हैं जिनमें कक्षा के नाम, विधियों के नाम, वर्ग स्थिरांक, वर्ग गुण, इंटरफ़ेस और अन्य मॉड्यूल से लक्षण शामिल होते हैं।
- मॉड्यूल किसी अन्य मॉड्यूल में घोषित वस्तु को क्रमबद्ध करता है।
- मॉड्यूल किसी अन्य मॉड्यूल द्वारा उपयोग किए गए डेटाबेस तालिकाओं का उपयोग करता है या संशोधित करता है।
Magento_AdminNotification
एक कठिन निर्भरता है Magento_Store
नरम निर्भरता
लागू करता है कि एक मॉड्यूल अन्य मॉड्यूल के बिना कार्य कर सकता है जिस पर यह निर्भर करता है।
नरम निर्भरताओं के उदाहरण में शामिल हैं:
- मॉड्यूल सीधे दूसरे मॉड्यूल की उपलब्धता की जांच करता है।
- मॉड्यूल दूसरे मॉड्यूल के कॉन्फ़िगरेशन का विस्तार करता है।
- मॉड्यूल दूसरे मॉड्यूल के लेआउट का विस्तार करता है।
Magento_AdvancedPricingImportExport
Magento_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