Je suis conscient que Magento 2 a introduit des modèles de données dans le cadre de l'architecture du contrat de service. Les modèles de données implémentent généralement des interfaces définies dans Api / Data / d'un module.
Mais Magento semble également avoir conservé les anciens modèles.
Prenons un exemple pour module-client.
- Interface de modèle de données définie dans Api / Data / CustomerInterface.php
- L'interface ci-dessus est implémentée dans Model / Data / Customer.php
- Le modèle de données a toutes les fonctions getter et setter pour les variables client, comme on pourrait s'y attendre
- En plus de ce qui précède, il existe également un Model / Customer.php. Cela a aussi la fonction getter et setter. Cela ressemble plus à un modèle Magento 1 qui se connecte au ResourceModel (Model / ResourceModel / Customer.php)
- Dans Model / ResourceModel / CustomerRepository.php, diverses fonctions collectent les données du modèle Magnento 1, les transfèrent vers le modèle de données, puis renvoient le modèle de données.
Pourquoi a-t-on besoin de l'ancien modèle? Pourquoi le modèle de données ne peut-il pas se connecter directement au ResourceModel?
\Magento\Customer\Api\Data\CustomerInterface
sont exposées pour l'API REST / SOAP (si activée). Cependant, vous n'avez pas besoin d'un modèle de données pour sélectionner les méthodes à exposer, car vous pouvez simplement connecter l'interface au modèle «réel» à la place. C'est comme ça que ça se passe avec\Magento\Catalog\Model\Product
et\Magento\Catalog\Api\Data\ProductInterface