Wiem, że Magento 2 wprowadziło modele danych jako część architektury umowy serwisowej. Modele danych zwykle implementują interfejsy zdefiniowane w Api / Data / modułu.
Ale wydaje się, że Magento zachowało również stare modele.
Weźmy przykład do klienta-modułu.
- Interfejs modelu danych zdefiniowany w Api / Data / CustomerInterface.php
- Powyższy interfejs jest zaimplementowany w Model / Data / Customer.php
- Model danych ma wszystkie funkcje pobierania i ustawiania zmiennych klienta, zgodnie z oczekiwaniami
- Oprócz powyższego istnieje również Model / Customer.php. To także ma funkcję gettera i setera. To bardziej przypomina model Magento 1, który łączy się z ResourceModel (Model / ResourceModel / Customer.php)
- W Model / ResourceModel / CustomerRepository.php różne funkcje zbierają dane z modelu Magnento 1, przesyłają je do modelu danych, a następnie zwracają model danych.
Dlaczego potrzebny jest stary model? Dlaczego model danych nie może połączyć się bezpośrednio z ResourceModel?
\Magento\Customer\Api\Data\CustomerInterface
są dostępne dla interfejsu API REST / SOAP (jeśli jest włączony). Jednak nie potrzebujesz modelu danych, aby wybrać, które metody zostaną ujawnione, ponieważ zamiast tego możesz po prostu podłączyć interfejs do „rzeczywistego” modelu. Tak to się robi z\Magento\Catalog\Model\Product
i\Magento\Catalog\Api\Data\ProductInterface