3
サービス契約よりも$ model-> load()を好む理由はありますか?
Magento 2のモジュール間で作業する好ましい方法は、サービスコントラクトを使用することです。 したがって、製品をロードする場合は、製品リポジトリを使用します。 $product = $productRepository->getById($id); これは、契約によりのインスタンスを返しますMagento\Catalog\Api\Data\ProductInterface。 しかし、代わりに古い方法を使用して、ドメイン層を直接呼び出すこともできます。 $product = $productFactory->create()->load($id); これが必要または有用になるケースはありますか? devdocsの発言(ハイライト追加): モジュールは別のモジュールを直接呼び出すことができます。この密結合ソリューションは、ほとんどの状況では推奨されませんが、避けられない場合があります。 [...] 別のモジュールのドメイン層コードを呼び出すための戦略は、システムの固有の構成とニーズに大きく依存します。 ソース:http : //devdocs.magento.com/guides/v2.0/architecture/archi_perspectives/domain_layer.html また、関連する質問に対するコメントは次のように述べています。 リポジトリを使用すると、製品データモデル(Api/Data/Product)が得られます。これは、縮約されたDTOに変換された製品モデルです。考慮すべきこと しかし、私が見る限り、オブジェクトは通常の条件下で同じであり、phpDocごとの戻り値の型が異なるだけです(Magento\Catalog\Api\Data\ProductInterface/ Magento\Catalog\Model\Product)