Мені відомо, що Magento 2 представив моделі даних як частину архітектури контрактів на послуги. Моделі даних зазвичай реалізують інтерфейси, визначені в Api / Data / модуля.
Але, Magento, схоже, зберегли і старі моделі.
Візьмемо приклад для модуля-замовника.
- Інтерфейс моделі даних визначений в Api / Data / CustomerInterface.php
- Вищевказаний інтерфейс реалізований у Model / Data / Customer.php
- Модель даних має всі функції отримання та встановлення для змінних клієнтів, як можна було б очікувати
- На додаток до вищезазначеного також є Model / Customer.php. У цьому теж є функція геттера та сетера. Це більше схоже на модель Magento 1, яка підключається до ResourceModel (Model / ResourceModel / Customer.php)
- У Model / ResourceModel / CustomerRepository.php різні функції збирають дані з моделі Magnento 1, передають їх у модель даних, а потім повертають модель даних.
Для чого потрібна стара модель? Чому модель даних не може безпосередньо з'єднуватися з ResourceModel?
\Magento\Customer\Api\Data\CustomerInterfaceпіддаються дії API REST / SOAP (якщо він включений). Однак для вибору методів даних вам не потрібна модель даних, оскільки ви можете просто підключити інтерфейс до 'реальної' моделі. Ось так це робиться\Magento\Catalog\Model\Productі з\Magento\Catalog\Api\Data\ProductInterface