Một lời giải thích đơn giản và rõ ràng (từ khóa học cơ bản của Magento U):
Phụ thuộc cứng
Ngụ ý rằng một mô-đun không thể hoạt động mà không có các mô-đun khác phụ thuộc vào nó.
Ví dụ về phụ thuộc cứng bao gồm:
- Mô-đun chứa mã sử dụng trực tiếp logic từ mô-đun khác (thể hiện, hằng lớp, phương thức tĩnh, thuộc tính lớp công khai, giao diện và đặc điểm).
- Mô-đun chứa các chuỗi bao gồm tên lớp, tên phương thức, hằng số lớp, thuộc tính lớp, giao diện và đặc điểm từ mô-đun khác.
- Mô-đun khử tuần tự hóa một đối tượng được khai báo trong mô-đun khác.
- Mô-đun sử dụng hoặc sửa đổi các bảng cơ sở dữ liệu được sử dụng bởi mô-đun khác.
Magento_AdminNotification
có một sự phụ thuộc cứng vào Magento_Store
Phụ thuộc mềm
Ngụ ý rằng một mô-đun có thể hoạt động mà không cần các mô-đun khác phụ thuộc vào nó.
Ví dụ về phụ thuộc mềm bao gồm:
- Các mô-đun trực tiếp kiểm tra tính khả dụng của mô-đun khác.
- Mô-đun mở rộng cấu hình của mô-đun khác.
- Các mô-đun mở rộng bố trí của mô-đun khác.
Magento_AdvancedPricingImportExport
có một phụ thuộc mềm Magento_CatalogImportExport
với mã như thế này:
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'
)
);
}
Nếu một mô-đun sử dụng mã từ một mô-đun khác, nó sẽ khai báo phụ thuộc một cách rõ ràng.
EDIT: chỉ nhận thấy rằng điều này cũng được giải thích rõ ràng trong tài liệu chính thức: https://devdocs.magento.com/guides/v2.3/arch architecture / archi_perspectives / component / modules / mod_depend.html