Penjelasan yang sederhana dan jelas (dari kursus dasar Magento U):
Ketergantungan yang keras
Menyiratkan bahwa modul tidak dapat berfungsi tanpa modul lain yang menjadi sandarannya .
Contoh dependensi keras meliputi:
- Modul ini berisi kode yang secara langsung menggunakan logika dari modul lain (instance, konstanta kelas, metode statis, properti kelas publik, antarmuka dan sifat-sifat).
- Modul ini berisi string yang menyertakan nama kelas, nama metode, konstanta kelas, properti kelas, antarmuka, dan ciri-ciri dari modul lain.
- Modul menderialisasi sebuah objek yang dideklarasikan dalam modul lain.
- Modul ini menggunakan atau memodifikasi tabel database yang digunakan oleh modul lain.
Magento_AdminNotification
memiliki ketergantungan yang sulit pada Magento_Store
Ketergantungan lembut
Menyiratkan bahwa suatu modul dapat berfungsi tanpa modul lain yang menjadi sandarannya .
Contoh ketergantungan lunak meliputi:
- Modul secara langsung memeriksa ketersediaan modul lain.
- Modul ini memperluas konfigurasi modul lain.
- Modul ini memperluas tata letak modul lain.
Magento_AdvancedPricingImportExport
memiliki ketergantungan lunak Magento_CatalogImportExport
dengan kode seperti ini:
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'
)
);
}
Jika suatu modul menggunakan kode dari modul lain, itu harus menyatakan ketergantungan secara eksplisit.
EDIT: perhatikan bahwa ini juga dijelaskan dengan jelas dalam dokumen resmi: https://devdocs.magento.com/guides/v2.3/architecture/archi_perspectives/components/modules/mod_depend.html