Magento 2(任意の安定バージョン)では、このコマンドbin/magento info:dependencies:show-modules
を実行できます。アプリケーションのルートにあるcsvファイルを取得し、modules-dependencies.csv
次のようなすべてのモジュールの依存関係を呼び出します。
ハード依存関係とは何ですか?ソフト依存関係とは何ですか?それぞれの例が役立ちます。
Magento 2(任意の安定バージョン)では、このコマンドbin/magento info:dependencies:show-modules
を実行できます。アプリケーションのルートにあるcsvファイルを取得し、modules-dependencies.csv
次のようなすべてのモジュールの依存関係を呼び出します。
ハード依存関係とは何ですか?ソフト依存関係とは何ですか?それぞれの例が役立ちます。
回答:
3つの異なる依存関係パーサー(の実装Magento\Setup\Module\Dependency\ParserInterface
)があります。
ハード依存とソフト依存を区別する唯一のものは、コンポーザーパーサーです(Magento \ Setup \ Module \ Dependency \ Parser \ Composer \ Json :: extractDependencies()を参照)
ソフト依存関係は、「提案」に記載されているパッケージですハード「必要」に依存パッケージを。
デフォルトの依存関係タイプはhardです。つまり、他のパーサーによって検出された依存関係は常にハードです(Magento \ Setup \ Module \ Dependency \ Report \ Dependency \ Data \ Dependency :: __ construct()を参照)。
簡単で明確な説明(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'
)
);
}
モジュールが別のモジュールのコードを使用する場合、依存関係を明示的に宣言する必要があります。
編集:これは公式ドキュメントでも明確に説明されていることに気づいた:https : //devdocs.magento.com/guides/v2.3/architecture/archi_perspectives/components/modules/mod_depend.html