我知道Magento 2引入了数据模型作为服务合同体系结构的一部分。数据模型通常实现在模块的Api / Data /中定义的接口。
但是,Magento似乎也保留了旧模型。
让我们以模块客户为例。
- 在Api / Data / CustomerInterface.php中定义的数据模型接口
- 上面的接口在Model / Data / Customer.php中实现
- 数据模型具有客户变量的所有getter和setter函数,正如人们所期望的那样
- 除上述内容外,还有一个Model / Customer.php。这也具有getter和setter功能。这更像是连接到ResourceModel(Model / ResourceModel / Customer.php)的Magento 1模型。
- 在Model / ResourceModel / CustomerRepository.php中,各种函数从Magnento 1模型收集数据,将它们传输到数据模型,然后返回数据模型。
为什么需要旧模型?为什么数据模型不能直接与ResourceModel连接?
\Magento\Customer\Api\Data\CustomerInterface
公开了REST / SOAP API(如果启用)中的所有方法。但是,您不需要数据模型来选择公开哪些方法,因为您只需将接口连接到“真实”模型即可。这就是它的与做的方式\Magento\Catalog\Model\Product
和\Magento\Catalog\Api\Data\ProductInterface