আমি বুঝতে পারি যে Magento 2 এ মডিউলগুলির মধ্যে কাজ করার জন্য পছন্দের উপায়টি পরিষেবার চুক্তি ব্যবহার করছে using
সুতরাং আমি যদি কোনও পণ্য লোড করতে চাই তবে আমি পণ্য সংগ্রহস্থলটি ব্যবহার করি:
$product = $productRepository->getById($id);
যা চুক্তির মাধ্যমে একটি উদাহরণ ফিরে আসে Magento\Catalog\Api\Data\ProductInterface
।
তবে আমি পরিবর্তে পুরানো উপায়টি ব্যবহার করতে পারি, সরাসরি ডোমেন স্তরটিকে কল করে:
$product = $productFactory->create()->load($id);
এটি প্রয়োজনীয় বা দরকারী হতে পারে এমন কোনও মামলা আছে?
ডেভডোকরা বলেছেন (হাইলাইট যুক্ত):
একটি মডিউল সরাসরি অন্য মডিউলে কল করতে পারে। এই দৃ tight়ভাবে মিলিত সমাধানটি বেশিরভাগ পরিস্থিতিতেই সুপারিশ করা হয় না তবে কখনও কখনও অনিবার্য হয় ।
[...]
অন্য মডিউলের ডোমেন-স্তর কোডটি কল করার জন্য আপনার কৌশলটি আপনার সিস্টেমের অনন্য কনফিগারেশন এবং প্রয়োজনীয়তার উপর নির্ভরশীল।
সূত্র: http://devdocs.magento.com/guides/v2.0/architecture/archi_persferencess/domain_layer.html
এবং সম্পর্কিত প্রশ্নে একটি মন্তব্য বলা হয়েছে:
সংগ্রহস্থল ব্যবহার করে আপনাকে একটি প্রোডাক্ট ডেটা মডেল (
Api/Data/Product
) দেবে, এটি একটি মডেল যা একটি বোবা-ডাউন ডিটিওতে রূপান্তরিত হয়। বিবেচনা করার মতো কিছু কারণ সেগুলি একেবারেই আলাদা
তবে যতদূর আমি দেখতে পাচ্ছি সাধারণ অবস্থার মধ্যে অবজেক্টগুলি একই, কেবল পিএইচপিডোকের ক্ষেত্রে ফেরতের প্রকারগুলি পৃথক ( Magento\Catalog\Api\Data\ProductInterface
/ Magento\Catalog\Model\Product
)