การพึ่งพายากคืออะไรและการพึ่งพาอาศัยที่นุ่มนวลคืออะไร


18

ใน Magento 2 (เวอร์ชั่นเสถียรใด ๆ ) คุณสามารถเรียกใช้คำสั่งนี้bin/magento info:dependencies:show-modulesและคุณจะได้รับไฟล์ csv ในรูทของแอปพลิเคชันของคุณที่modules-dependencies.csvมีการอ้างอิงโมดูลทั้งหมดที่มีลักษณะดังนี้:

ป้อนคำอธิบายรูปภาพที่นี่

การพึ่งพาแบบยากคืออะไรและการพึ่งพาแบบ Soft คืออะไร ตัวอย่างของแต่ละคนจะช่วย


2
ตรวจสอบว่าอาจช่วยdevdocs.magento.com/guides/v2.0/architecture/archi_perspectives/ …
Ketan Borada

@KetanKpBorada ขอบคุณ เนื้อหาการอ่านที่ดี แต่ตัวอย่างของการอ้างอิงทั้งแบบแข็งและแบบอ่อนจะช่วยได้หากคุณมีตัวอย่างเช่นนี้โปรดใส่ไว้เป็นคำตอบ
Marius

คำตอบ:


13

มีตัวแยกวิเคราะห์การพึ่งพาที่แตกต่างกันสามตัว (การนำไปปฏิบัติMagento\Setup\Module\Dependency\ParserInterface):

  • รหัส:มองหาชั้นเรียนที่ใช้ในรหัส
  • config / xml:ค้นหาการอ้างอิงในการประกาศโมดูล
  • ผู้แต่ง / json:ค้นหาการอ้างอิงใน composer.json

สิ่งเดียวที่สร้างความแตกต่างระหว่างการพึ่งพาแบบยากและแบบอ่อนคือตัวแยกวิเคราะห์ผู้แต่ง (ดู: Magento \ Setup \ Module \ Dependency \ Parser \ Composer \ Json :: extractDependencies () )

นุ่มพึ่งพาเป็นแพคเกจที่ระบุไว้ใน "ขอแนะนำ" ซึ่งเป็นเรื่องยากที่พึ่งพาแพคเกจใน "ต้องการ"

ประเภทการพึ่งพาเริ่มต้นนั้นยากหมายความว่าการพึ่งพาที่พบโดย parsers อื่น ๆ จะยากเสมอ (ดูMagento \ Setup \ Module \ Dependency \ Report \ Dependency \ Data \ Dependency :: __ construct () )


12

คำอธิบายที่ง่ายและชัดเจน (จากหลักสูตรพื้นฐาน 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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.