ฉันทราบว่า Magento 2 แนะนำตัวแบบข้อมูลเป็นส่วนหนึ่งของสถาปัตยกรรมสัญญาการบริการ โมเดลข้อมูลมักจะใช้อินเตอร์เฟสที่กำหนดไว้ใน Api / Data / ของโมดูล
แต่ดูเหมือนว่าวีโอไอพีจะยังคงรักษาโมเดลเก่าไว้เช่นกัน
ลองมาตัวอย่างให้กับลูกค้าโมดูล
- อินเตอร์เฟสโมเดลข้อมูลที่กำหนดไว้ใน Api / Data / CustomerInterface.php
- อินเทอร์เฟซข้างต้นถูกนำไปใช้ใน Model / Data / Customer.php
- ตัวแบบข้อมูลมีฟังก์ชัน getter และ setter ทั้งหมดสำหรับตัวแปรลูกค้าตามที่คาดหวัง
- นอกจากข้างต้นแล้วยังมี Model / Customer.php นี้ก็มีฟังก์ชั่น getter และ setter นี่เป็นเหมือนโมเดล Magento 1 ที่เชื่อมต่อกับ ResourceModel (Model / ResourceModel / Customer.php)
- ใน Model / ResourceModel / CustomerRepository.php ฟังก์ชั่นต่าง ๆ จะรวบรวมข้อมูลจากโมเดล Magnento 1 โอนไปยังโมเดลข้อมูลจากนั้นส่งคืนโมเดลข้อมูล
ทำไมต้องมีรุ่นเก่า เหตุใดโมเดลข้อมูลไม่สามารถเชื่อมต่อโดยตรงกับ ResourceModel ได้
\Magento\Customer\Api\Data\CustomerInterface
จะถูกเปิดเผยสำหรับ REST / SOAP API (ถ้าเปิดใช้งาน) อย่างไรก็ตามคุณไม่จำเป็นต้องมีแบบจำลองข้อมูลเพื่อเลือกวิธีการที่จะเปิดเผยเนื่องจากคุณสามารถเชื่อมต่ออินเทอร์เฟซกับรูปแบบ 'ของจริง' แทน นั่นคือวิธีที่มันทำกับ\Magento\Catalog\Model\Product
และ\Magento\Catalog\Api\Data\ProductInterface