Utilisation des classes Proxy Magento 2

 

Magento 2 utilise le principe d'injection de dépendances comme alternative à la classe finale Mage de Magento 1. Cela veut dire que si une classe A dépend du service B, B doit être injecté directement dans le constructeur de A, ce n'est plus à A de récupérer la dépendance B au moment où il en a besoin.

Cela implique inévitablement que B doit être instancié avant d'être injecté dans A. Cela n'a rien de problématique en soi, par contre imaginons que l'instanciation de B soit relativement lourde en terme de ressource et que B possède également des dépendances, qui elles-mêmes possèdent des dépendances, qui elles-mêmes... Vous l'aurez compris, cela peut commencer à devenir non négligeable, surtout (et c'est là que la problématique devient intéressante) si A a besoin de B uniquement dans certaines conditions (selon l'état d'une variable, l'état d'un service, le calcul d'un résultat, ou autre), l'instanciation de B devient donc inutile si A n'en a jamais besoin. Les classes de type Proxy sont présentes pour répondre à cette problématique.