Dans la plupart des constructeurs de la classe, un objet Context est passé. Je ne pouvais pas comprendre comment cet objet contextuel fonctionne. J'ai également remarqué que parfois cela est passé au constructeur de la classe parent comme ci-dessous.
public function __construct(
\Magento\Framework\App\Action\Context $context,
\Magento\Catalog\Model\Design $catalogDesign,
\Magento\Catalog\Model\Session $catalogSession,
....
parent::__construct(
$context,
$layoutFactory,
Pouvez-vous expliquer comment fonctionne cet objet contextuel spécifique?
la source
$context
?Des objets contextuels ont été introduits pour isoler les développeurs tiers des changements de constructeurs de classes abstraites.
Dans Magento 1, les classes abstraites avec beaucoup de comportement "d'aide" étaient considérées comme une API pratique pour l'extension de classe. Cela a provoqué un très grand nombre de méthodes et dépendances implicites dans les classes abstraites (
AbstractModel
,AbstractBlock
,AbstractAction
)Dans Magento 2, les API basées sur l'héritage (plus précisément les SPI) sont déconseillées, mais de nombreuses API héritées existent toujours. Au départ, nous avions prévu de supprimer progressivement les comportements supplémentaires des classes abstraites. Et pour ne pas casser tous les extenseurs lorsque nous supprimions certaines dépendances du constructeur, nous avons introduit des objets Context.
Le plan actuel consiste à abandonner les API basées sur l'héritage avec des API basées sur l'interface à un moment donné.
la source