Surcharger le core

La surcharge d'une classe a été grandement simplifiée dans Magento 2. Cela s'appelle maintenant une preference et c'est géré dans le fichier di.xml de notre module.

La syntaxe est la même quelle que soit la classe :

<?xml version="1.0" encoding="UTF-8" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <preference for="<la classe à surcharger>" type="<la classe de notre module qui surcharge celle de Magento>" />
</config>

Notre module doit être dépendant du module que l'on surcharge (avec une sequence dans le module.xml).

Ce n'est pas une surcharge à proprement parler, mais les interfaces doivent avoir une preference pour indiquer la classe à instancier. Par exemple, nous retrouverons pour une entité :

<preference for="Adexos\Formation\Api\EntityRepositoryInterface" type="Adexos\Formation\Model\EntityRepository" />