1. Gebruik Constructor Injection: Injecteer afhankelijkheden altijd via constructors. Magento 2 moedigt constructor injection aan boven method injection voor betere onderhoudbaarheid en testbaarheid van de code.
    public function __construct(
        \Vendor\Module\Model\SomeModel $someModel,
        \Vendor\Module\Helper\Data $helper
    ) {
        $this->someModel = $someModel;
        $this->helper = $helper;
    }
  2. Type-hint uw afhankelijkheden: Voorzie uw constructorparameters van type hints om de klasse/interface aan te geven die de afhankelijkheid dient te zijn. Dit verbetert de leesbaarheid van de code en de autocompletion in IDE's.
  3. Vermijd direct gebruik van Object Manager: Gebruik de Object Manager niet rechtstreeks om objecten te creëren. Vertrouw in plaats daarvan op constructor injection of factory-methoden die door Magento worden geleverd.
    // Vermijd
    $object = \Magento\Framework\App\ObjectManager::getInstance()->get('SomeClass');
    // Verkies
    public function __construct(\Vendor\Module\SomeClassFactory $someClassFactory) {
        $this->someClassFactory = $someClassFactory;
    }
  4. Gebruik factories voor objectcreatie: Wanneer u een instantie van een klasse moet aanmaken, gebruikt u door Magento gegenereerde factory-klassen. Vermijd het direct instantiëren van klassen.
    public function createSomeObject() {
        $someObject = $this->someClassFactory->create();
        // ...
    }

  5. Houd de lijst constructorparameters kort: Vermijd een lange lijst constructorparameters. Als u merkt dat een klasse te veel afhankelijkheden vereist, kan dit een teken zijn dat de klasse te veel verantwoordelijkheden heeft en geherstructureerd moet worden.
  6. Gebruik interface-afhankelijkheden: Maak waar mogelijk gebruik van interfaces in plaats van concrete klassen. Hierdoor wordt uw code flexibeler en kunnen implementaties eenvoudiger worden uitgewisseld.
    public function __construct(\Vendor\Module\Api\SomeInterface $someService) {
        $this->someService = $someService;
    }

  7. Maak gebruik van codegeneratoren: Gebruik codegeneratoren zoals bin/magento dev:di:info en bin/magento dev:di:compile om uw DI-configuratie te analyseren en te optimaliseren.
  8. Vermijd circulaire afhankelijkheden: Wees voorzichtig met circulaire afhankelijkheden, omdat deze tot moeilijk te onderhouden code kunnen leiden. Probeer uw klassen zo te ontwerpen dat circulaire afhankelijkheden worden geminimaliseerd of geëlimineerd.
  9. Test uw code: Schrijf altijd unittests voor uw klassen om te verifiëren dat afhankelijkheden correct worden geïnjecteerd en dat de klasse zich gedraagt zoals verwacht.
  10. Gebruik service contracts: Gebruik waar mogelijk de service contracts en repositories van Magento om met database-entiteiten te werken. Dit bevordert een consistente en gestructureerde manier van werken met data.
  11. Volg de Magento-codingstandaarden: Houd u aan de codingstandaarden en best practices van Magento bij het schrijven van uw DI-configuratie, klassen en methoden.
  12. Gebruik plugins met mate: Hoewel het plugin-systeem van Magento krachtig is, dient u het niet te veel te gebruiken. Plugins zijn bedoeld voor gevallen waarin geen andere oplossing haalbaar is.