Una explicación simple y clara (del curso de fundamentos de Magento U):
Dependencia dura
Implica que un módulo no puede funcionar sin los otros módulos de los que depende.
Ejemplos de dependencias duras incluyen:
- El módulo contiene código que usa directamente la lógica de otro módulo (instancias, constantes de clase, métodos estáticos, propiedades de clase pública, interfaces y rasgos).
- El módulo contiene cadenas que incluyen nombres de clases, nombres de métodos, constantes de clase, propiedades de clase, interfaces y rasgos de otro módulo.
- El módulo deserializa un objeto declarado en otro módulo.
- El módulo usa o modifica las tablas de la base de datos utilizadas por otro módulo.
Magento_AdminNotification
tiene una fuerte dependencia de Magento_Store
Dependencia suave
Implica que un módulo puede funcionar sin los otros módulos de los que depende.
Los ejemplos de dependencias suaves incluyen:
- El módulo verifica directamente la disponibilidad de otro módulo.
- El módulo extiende la configuración de otro módulo.
- El módulo extiende el diseño de otro módulo.
Magento_AdvancedPricingImportExport
tiene una dependencia suave Magento_CatalogImportExport
con código como este:
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'
)
);
}
Si un módulo usa código de otro módulo, debe declarar la dependencia explícitamente.
EDITAR: acabo de notar que esto también se explica claramente en el documento oficial: https://devdocs.magento.com/guides/v2.3/architecture/archi_perspectives/components/modules/mod_depend.html