어려운 종속성과 부드러운 종속성은 무엇입니까?


18

Magento 2 (안정된 버전)에서는이 명령을 실행할 bin/magento info:dependencies:show-modules수 있으며 modules-dependencies.csv다음과 같은 모든 모듈 종속성으로 호출 되는 응용 프로그램의 루트에 csv 파일 이 있습니다.

여기에 이미지 설명을 입력하십시오

Hard 의존성은 무엇이며 Soft 의존성은 무엇입니까? 각각의 예가 도움이 될 것입니다.



@KetanKpBorada. 감사. 좋은 읽기 자료이지만 하드 및 소프트 종속성의 예가 도움이 될 것입니다.
Marius

답변:


13

세 가지 다른 종속성 파서가 있습니다 (구현 Magento\Setup\Module\Dependency\ParserInterface) :

  • 코드 : 코드에 사용 된 클래스를 찾습니다
  • config / xml : 모듈 선언에서 종속성을 찾습니다
  • composer / json : composer.json에서 종속성을 찾습니다 .

hard 및 soft 종속성을 구별하는 유일한 것은 composer 구문 분석기입니다 ( Magento \ Setup \ Module \ Dependency \ Parser \ Composer \ Json :: extractDependencies () 참조 ).

소프트 종속성 "제안"는에 나와있는 패키지이다 하드 "필요"에 의존 패키지를.

기본 종속성 유형은 hard 입니다. 즉, 다른 파서가 찾은 종속성은 항상 단단합니다 ( 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.