Magento 2がサービスコントラクトアーキテクチャの一部としてデータモデルを導入したことは承知しています。データモデルは通常、モジュールのApi / Data /で定義されたインターフェイスを実装します。
しかし、Magentoは古いモデルも保持しているようです。
モジュール顧客の例を見てみましょう。
- Api / Data / CustomerInterface.phpで定義されたデータモデルインターフェイス
- 上記のインターフェースはModel / Data / Customer.phpに実装されています
- データモデルには、顧客変数のすべてのゲッター関数とセッター関数があります。
- 上記に加えて、Model / Customer.phpもあります。これにはゲッターとセッターの機能もあります。これは、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