ম্যাগেন্তোর সাথে আমার বেশ অভিজ্ঞতা আছে তবে আমি বুঝতে পেরেছিলাম যে কোনও মডেল লোড করার কোন উপায়টি সঠিক এবং কেন তা আমি বুঝতে পারি না। আমি এই বিষয়টি সম্পর্কে যা যা করতে পেরেছি তা সবই পড়েছি তবে এই জাতীয় জিনিসগুলি বোঝানো লোকেরা আসলে কখনও ব্যাখ্যা করার মতো গভীর হয় না, কেন অন্যটির পরিবর্তে এই নির্দিষ্ট পদ্ধতিটি ব্যবহার করে। ধরে নেওয়া যাক আমি যে মডেলটি লোড করতে চাইছি তার কোনও ভাণ্ডার নেই।
এখনও অবধি আমি সবসময় কনস্ট্রাক্টরে মডেল ব্যবহার করি এবং তারপরে কেবল এটি লোড করি।
public function __construct(
\Vendor\Module\Model\Something $somethingModel
) {
$this->somethingModel = $somethingModel;
}
public function getTestById($id) {
return $this->somethingModel->load($id);
}
এবং এটি সর্বদা উদ্দেশ্য হিসাবে কাজ করেছিল, আমি এটিও বেশ নিশ্চিত যে এটি কমপক্ষে মূলত ব্যবহৃত হয়েছিল।
কিন্তু তখন আমি আমার এক সহকর্মী ব্যবহার করতে দেখেছি
modelFactory->create()->load($id)
যতদূর আমি বুঝতে পারি কারখানাগুলি একটি নতুন সত্তা তৈরিতে ব্যবহৃত হচ্ছে, উদাহরণস্বরূপ, যদি আমি একটি নতুন পণ্য তৈরি করতে চাইতাম তবে আমি কারখানাটি তৈরি করতে পারি, এটি ডেটা দিয়ে পপুলেট করতে পারি এবং তারপরে এটি সংরক্ষণ করতে পারি। তবে আবার, আমি বিষয়টি নিয়ে গবেষণা শুরু করেছিলাম এবং আমি ফ্যাবিয়ান শেমংলার ( ম্যাজেন্টো 2-তে কখন একটি রিপোজিটরি এবং কারখানা ব্যবহার করব? ) এর উদাহরণ পেয়েছি, যারা এইভাবে মডেলটি লোড করছিলেন এবং অন্যদেরকে কেবল মডেলগুলি লোড করা থেকে নিরুৎসাহিত করেছিলেন, তিনি করেননি ' যদিও এটি 'পরিষেবা চুক্তির অংশ নয়' বলার পাশাপাশি কেন ব্যাখ্যা করবেন না। আমি যতদূর জানি রিপোজিটরিগুলি পরিষেবা চুক্তির অংশ, সুতরাং কোনও মডেলের লোডিংয়ের ক্ষেত্রে যখন এখানে কোনও সংগ্রহস্থলের মাধ্যমে পাওয়া যায় না তখন আমি এখানে কোনও সংযোগ দেখতে পাই না।
আরও কিছু বিভ্রান্তি যুক্ত করতে আমি তৈরি মডেলফ্যাক্টরি থেকে রিসোর্সমোডেল পেয়ে মডেলটি লোড করার একটি উপায়ও পেয়েছি, এটি বিনাই কোপ উপস্থাপন করেছিলেন ( ম্যাজেন্টো 2 তে কাস্টম মডিউলটির জন্য পরিষেবা চুক্তিটি কীভাবে প্রয়োগ করা যায়? ) এবং এখন আমি আমি সর্বদা পড়েছি বলে সম্পূর্ণরূপে হারিয়েছি যে আমার সরাসরি সংস্থান মডেল ব্যবহার করা উচিত নয়।
হ্যাঁ, কেউ আমাকে বলতে পারেন যে সঠিক উপায়টি এবং কেন আমি অন্য সমস্ত পদ্ধতির পরিবর্তে এটি ব্যবহার করব?