Tôi biết rằng Magento 2 đã giới thiệu các mô hình dữ liệu như là một phần của kiến trúc hợp đồng dịch vụ. Các mô hình dữ liệu thường thực hiện các giao diện được xác định trong Api / Dữ liệu / của một mô-đun.
Nhưng, Magento dường như cũng giữ lại các mô hình cũ.
Hãy lấy một ví dụ cho khách hàng mô-đun.
- Giao diện mô hình dữ liệu được xác định trong Api / Data / CustomerInterface.php
- Giao diện trên được triển khai trong Model / Data / Customer.php
- Mô hình dữ liệu có tất cả hàm getter và setter cho các biến của khách hàng, như người ta mong đợi
- Ngoài những thứ trên còn có Model / Customer.php. Điều này cũng có chức năng getter và setter. Đây giống như một mô hình Magento 1 kết nối với ResourceModel (Model / ResourceModel / Customer.php)
- Trong Model / ResourceModel / CustomerRep repository.php, nhiều chức năng khác nhau thu thập dữ liệu từ mô hình Magnento 1, chuyển chúng sang mô hình dữ liệu và sau đó trả về mô hình dữ liệu.
Tại sao người ta cần mô hình cũ? Tại sao mô hình dữ liệu không thể kết nối trực tiếp với ResourceModel?
\Magento\Customer\Api\Data\CustomerInterface
được hiển thị cho API REST / SOAP (nếu được bật). Tuy nhiên, bạn không cần một mô hình dữ liệu để chọn phương thức nào được hiển thị, vì bạn chỉ có thể kết nối giao diện với mô hình 'thực' thay thế. Đó là cách nó được thực hiện với\Magento\Catalog\Model\Product
và\Magento\Catalog\Api\Data\ProductInterface