Magento 2.1.18 is the final 2.1.x release. After June 2019, Magento 2.1.x will no longer receive security patches, quality fixes, or documentation updates.
To maintain your site's performance, security, and PCI compliance, upgrade to the latest version of Magento.

Module relationships

Overview

Understanding how one module relates to another helps determine how it reacts to changes in that module.

A single module can have the following types of relationships with another module:

  • uses: module A uses module B if it invokes behavior of module B

  • reacts to: module A reacts to module B if its behavior is triggered by an event in module B without module B knowing about module A

  • customizes: module A customizes module B if it modifies the behavior of module B

  • implements: module A implements module B if it implements some, not necessarily all, behavior that is defined in module B

  • replaces: module A replaces module B if it provides its own version of the API exposed and implemented by module B

Relationship types and scenarios

A uses B, C customizes B

In a scenario where module A uses module B and module C customizes module B, the customizations in module C must not break the API of module B so that module A still functions properly in the face of these customizations.

Module relationship scenarios: A uses B, C customizes B

A reacts to B, C customizes B

Similarly, in a case where module A reacts to module B and module C customizes module B, the customizations in module C must not interfere with the events in module B that module A depends on.

Module relationship scenarios: A reacts to B, C customizes B

A and C customize B

If both module A and C customize module B, be careful about how these customizations are implemented so that you avoid conflicts (see below).

Module relationship scenarios: A and C customize B

A replaces B

If module A replaces module B, it needs to be able to do so in such a way that other modules are not affected. That will mean not having direct hard dependencies on module B, but rather dependencies on a third module, module C, that both module A and B implement.

Module relationship scenarios: A replaces B

Module overview

Updated