ধরা যাক আমি একটি ম্যাজেন্টো 2 এক্সটেনশন তৈরি করছি যা ভাল করে .... গুরুত্বপূর্ণ নয়। ধরা যাক এটি দুর্দান্ত দুর্দান্ত জিনিস দেয়।
তবে আমি নিশ্চিত করতে চাই যে এটি সঠিক মান ব্যবহার করে তৈরি হচ্ছে যাতে অন্যান্য বিকাশকারীরা এটি বাড়িয়ে দিতে পারে।
ইন্টারফেসের সাথে সংমিশ্রণে আমি কখন ডিআই ব্যবহার করব এবং কখন আমার উচিত হবে না?
এটি পরিষ্কার করার জন্য এখানে একটি মূল উদাহরণ।
ক্লাসে Magento\Core\Helper\Data
এরকম একজন কনস্ট্রাক্টর রয়েছে:
public function __construct(
\Magento\Framework\App\Helper\Context $context,
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
\Magento\Store\Model\StoreManagerInterface $storeManager,
\Magento\Framework\App\State $appState,
PriceCurrencyInterface $priceCurrency,
$dbCompatibleMode = true
) {
parent::__construct($context);
$this->_scopeConfig = $scopeConfig;
$this->_storeManager = $storeManager;
$this->_appState = $appState;
$this->_dbCompatibleMode = $dbCompatibleMode;
$this->_priceCurrency = $priceCurrency;
}
আমার প্রশ্নটি ভ্যারিয়ায় নিবদ্ধ \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
(আমি জানি একই নির্মাণকারীর মধ্যে অন্যরা রয়েছেন, তবে একটি ব্যাখ্যা আমার মনে হয় সমস্ত ক্ষেত্রেই খাপ খায়)।
মতে di.xml
কোর মডিউল থেকে Var এর একটি দৃষ্টান্ত হতে হবে Magento\Framework\App\Config
:
<preference for="Magento\Framework\App\Config\ScopeConfigInterface" type="Magento\Framework\App\Config" />
তবে আমার প্রয়োজন হলে আমি সহজেই তা পরিবর্তন করতে পারি।
আমার কোডে কখন এমন ইন্টারফেস ব্যবহার করা উচিত?
আমি এই অসম্পূর্ণ নমুনা মডিউলটি তৈরি করেছি (বিজ্ঞাপনের জন্য দুঃখিত), যেখানে আমি এই জাতীয় ইন্টারফেস ব্যবহার করেছি, তবে সেগুলির সমস্তই মূল থেকে এসেছে। আমি নিজের একটা তৈরি করিনি। আমি কি?