Zor bağımlılık nedir ve yumuşak bağımlılık nedir?


18

Magento 2'de (herhangi bir kararlı sürüm) bu komutu çalıştırabilirsiniz bin/magento info:dependencies:show-modulesve uygulamanızın kökünde modules-dependencies.csvşuna benzeyen tüm modül bağımlılıklarıyla adlandırılan bir csv dosyası alırsınız :

resim açıklamasını buraya girin

Sert bağımlılık nedir ve Yumuşak bağımlılık nedir? Her birine bir örnek yardımcı olacaktır.


2
kontrol edip edemeyeceğini
Ketan Borada

@KetanKpBorada. Teşekkürler. İyi okuma materyali, ancak hem sert hem de yumuşak bağımlılıkların bir örneği yardımcı olacaktır, Böyle bir örneğiniz varsa, lütfen bir cevap olarak koyun.
Marius

Yanıtlar:


13

Üç farklı bağımlılık ayrıştırıcısı vardır (uygulamaları Magento\Setup\Module\Dependency\ParserInterface):

  • kod: kodda kullanılan sınıfları arar
  • config / xml: modül bildirimindeki bağımlılıkları arar
  • composer / json: composer.json içindeki bağımlılıkları arar

Zor ve yumuşak bağımlılıklar arasında ayrım yapan tek kişi besteci ayrıştırıcısıdır (bkz: Magento \ Setup \ Module \ Dependency \ Parser \ Composer \ Json :: extractDependencies () )

Bir yumuşak bağımlılık, "önermek" Bir listelenen bir paket olduğu sert "gerektiren" in bağımlılık bir paket.

Varsayılan bağımlılık türü zor , diğer ayrıştırıcılar tarafından bulunan bağımlılıkların her zaman zor olduğu anlamına gelir (bkz. Magento \ Setup \ Module \ Dependency \ Report \ Dependency \ Data \ Dependency :: __ construct () ).


12

Basit ve net bir açıklama (Magento U'nun temelleri kursundan):

Zor bağımlılık

Bir modülün bağlı olduğu diğer modüller olmadan çalışamayacağı anlamına gelir.

Zor bağımlılıklara örnek olarak şunlar verilebilir:

  • Modül , doğrudan başka bir modülden (örnekler, sınıf sabitleri, statik yöntemler, ortak sınıf özellikleri, arayüzler ve özellikler) mantığı kullanan bir kod içerir .
  • Modül , sınıf adları, yöntem adları, sınıf sabitleri, sınıf özellikleri, arabirimler ve başka bir modülün özelliklerini içeren dizeler içerir.
  • Modül , başka bir modülde bildirilen bir nesnenin serileştirilmesini kaldırır.
  • Modül , başka bir modül tarafından kullanılan veritabanı tablolarını kullanır veya değiştirir.

Magento_AdminNotification bağımlılığı zor Magento_Store

Yumuşak bağımlılık

Bir ima modül olabilir varlığını dayandırdığı diğer modüllere olmadan çalışır.

Yumuşak bağımlılıklara örnek olarak aşağıdakiler verilebilir:

  • Modül doğrudan başka bir modülün kullanılabilirliğini kontrol eder.
  • Modül , başka bir modülün yapılandırmasını genişletir.
  • Modül , başka bir modülün düzenini genişletir.

Magento_AdvancedPricingImportExportböyle bir Magento_CatalogImportExportkod ile yumuşak bir bağımlılığı vardır :

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

Bir modül başka bir modülün kodunu kullanıyorsa, bağımlılığı açıkça bildirmelidir.

EDIT: bunun resmi dokümanda da açıkça açıklandığını fark ettim: https://devdocs.magento.com/guides/v2.3/architecture/archi_perspectives/components/modules/mod_depend.html

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.