Sono consapevole che Magento 2 ha introdotto modelli di dati come parte dell'architettura del contratto di servizio. I modelli di dati di solito implementano interfacce definite in Api / Dati / di un modulo.
Ma Magento sembra aver mantenuto anche i vecchi modelli.
Facciamo un esempio per modulo-cliente.
- Interfaccia del modello di dati definita in Api / Data / CustomerInterface.php
- L'interfaccia sopra è implementata in Model / Data / Customer.php
- Il modello di dati ha tutte le funzioni getter e setter per le variabili del cliente, come ci si aspetterebbe
- Oltre a quanto sopra c'è anche un Model / Customer.php. Anche questo ha funzione getter e setter. È più simile a un modello Magento 1 che si collega a ResourceModel (Model / ResourceModel / Customer.php)
- In Model / ResourceModel / CustomerRepository.php, varie funzioni raccolgono dati dal modello Magnento 1, li trasferiscono nel modello dati e quindi restituiscono il modello dati.
Perché è necessario il vecchio modello? Perché il modello di dati non può connettersi direttamente con ResourceModel?
\Magento\Customer\Api\Data\CustomerInterface
sono esposti per l'API REST / SOAP (se abilitato). Tuttavia, non è necessario un modello di dati per selezionare i metodi esposti, poiché è possibile semplicemente connettere l'interfaccia al modello "reale". È così che viene fatto\Magento\Catalog\Model\Product
e\Magento\Catalog\Api\Data\ProductInterface