Estou ciente de que o Magento 2 introduziu modelos de dados como parte da arquitetura do contrato de serviço. Os modelos de dados geralmente implementam interfaces definidas em Api / Data / de um módulo.
Mas, Magento parece ter mantido os modelos antigos também.
Vamos dar um exemplo ao módulo-cliente.
- Interface do modelo de dados definida em Api / Data / CustomerInterface.php
- A interface acima é implementada em Model / Data / Customer.php
- O modelo de dados possui todas as funções getter e setter para as variáveis do cliente, como seria de esperar
- Além do acima, também há um Model / Customer.php. Isso também tem a função getter e setter. É mais como um modelo Magento 1 que se conecta ao ResourceModel (Model / ResourceModel / Customer.php)
- Em Model / ResourceModel / CustomerRepository.php, várias funções coletam dados do modelo Magnento 1, transferem-nos para o modelo de dados e retornam o modelo de dados.
Por que alguém precisa do modelo antigo? Por que o modelo de dados não pode se conectar diretamente ao ResourceModel?
\Magento\Customer\Api\Data\CustomerInterface
são expostos para a API REST / SOAP (se ativado). No entanto, você não precisa de um modelo de dados para selecionar quais métodos estão expostos, pois você pode simplesmente conectar a interface ao modelo 'real'. É assim que é feito\Magento\Catalog\Model\Product
e\Magento\Catalog\Api\Data\ProductInterface