Cos'è una dipendenza forte e cos'è una dipendenza soft?


18

In Magento 2 (qualsiasi versione stabile) puoi eseguire questo comando bin/magento info:dependencies:show-modulese otterrai un file csv nella radice della tua applicazione chiamato modules-dependencies.csvcon tutte le dipendenze del modulo che assomigliano a questo:

inserisci qui la descrizione dell'immagine

Cos'è una dipendenza Hard e cos'è una dipendenza Soft? Un esempio di ciascuno sarebbe di aiuto.



@KetanKpBorada. Grazie. Un buon materiale di lettura, ma un esempio di dipendenze sia dure che morbide sarebbe di aiuto, se hai un esempio del genere, ti preghiamo di inserirlo come risposta.
Marius

Risposte:


13

Esistono tre diversi parser di dipendenze (implementazioni di Magento\Setup\Module\Dependency\ParserInterface):

  • codice: cerca le classi utilizzate nel codice
  • config / xml: cerca dipendenze nella dichiarazione del modulo
  • compositore / json: cerca dipendenze in composer.json

L'unico che fa una distinzione tra dipendenze dure e morbide è il parser del compositore (vedi: Magento \ Setup \ Module \ Dependency \ Parser \ Composer \ Json :: extractDependencies () )

Un morbido dipendenza è un pacchetto, elencati in "suggerire", un disco di dipendenza di un pacchetto di "richiedere".

Il tipo di dipendenza predefinito è rigido , ciò significa che le dipendenze trovate dagli altri parser sono sempre difficili (vedi Magento \ Setup \ Modulo \ Dipendenza \ Rapporto \ Dipendenza \ Dati \ Dipendenza :: __ costrutto () ).


12

Una spiegazione semplice e chiara (dal corso sui fondamentali di Magento U):

Dipendenza forte

Implica che un modulo non può funzionare senza gli altri moduli da cui dipende.

Esempio di forti dipendenze includono:

  • Il modulo contiene codice che utilizza direttamente la logica di un altro modulo (istanze, costanti di classe, metodi statici, proprietà della classe pubblica, interfacce e tratti).
  • Il modulo contiene stringhe che includono nomi di classe, nomi di metodi, costanti di classe, proprietà della classe, interfacce e tratti di un altro modulo.
  • Il modulo serializza un oggetto dichiarato in un altro modulo.
  • Il modulo utilizza o modifica le tabelle del database utilizzate da un altro modulo.

Magento_AdminNotification ha una forte dipendenza da Magento_Store

Dipendenza leggera

Implica che un modulo può funzionare senza gli altri moduli da cui dipende.

Esempio di dipendenze soft includono:

  • Il modulo controlla direttamente la disponibilità di un altro modulo.
  • Il modulo estende la configurazione di un altro modulo.
  • Il modulo estende il layout di un altro modulo.

Magento_AdvancedPricingImportExportha una dipendenza debole Magento_CatalogImportExportcon codice come questo:

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'
        )
    );
}

Se un modulo utilizza il codice di un altro modulo, dovrebbe dichiarare esplicitamente la dipendenza.

EDIT: ho appena notato che questo è anche chiaramente spiegato nel documento ufficiale: https://devdocs.magento.com/guides/v2.3/architecture/archi_perspectives/components/modules/mod_depend.html

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.