Просте і зрозуміле пояснення (з курсу 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'
)
);
}
Якщо модуль використовує код з іншого модуля, він повинен чітко оголосити залежність.
EDIT: щойно помітив, що це також чітко пояснено в офіційному документі: https://devdocs.magento.com/guides/v2.3/architecture/archi_perspectives/components/modules/mod_depend.html