Saya sadar bahwa Magento 2 memperkenalkan model data sebagai bagian dari arsitektur kontrak layanan. Model data biasanya mengimplementasikan antarmuka yang didefinisikan dalam Api / Data / modul.
Tapi, Magento tampaknya tetap mempertahankan model lama juga.
Mari kita ambil contoh untuk pelanggan modul.
- Antarmuka model data didefinisikan dalam Api / Data / CustomerInterface.php
- Antarmuka di atas diimplementasikan dalam Model / Data / Customer.php
- Model data memiliki semua fungsi pengambil dan penyetel untuk variabel pelanggan, seperti yang diharapkan
- Selain di atas ada juga Model / Pelanggan.php. Ini juga memiliki fungsi pengambil dan penyetel. Ini lebih seperti model Magento 1 yang terhubung ke ResourceModel (Model / ResourceModel / Customer.php)
- Dalam Model / ResourceModel / CustomerRepository.php, berbagai fungsi mengumpulkan data dari model Magnento 1, mentransfernya ke model data, dan kemudian mengembalikan model data.
Mengapa orang membutuhkan model lama? Mengapa model data tidak dapat terhubung langsung dengan ResourceModel?
\Magento\Customer\Api\Data\CustomerInterface
terbuka untuk REST / SOAP API (jika diaktifkan). Namun, Anda tidak memerlukan model data untuk memilih metode mana yang terbuka, karena Anda cukup menghubungkan antarmuka ke model 'nyata'. Begitulah cara melakukannya\Magento\Catalog\Model\Product
dan\Magento\Catalog\Api\Data\ProductInterface