Diyelim ki bir Magento 2 uzantısı geliştiriyorum ... iyi ... önemli değil. Diyelim ki süper harika şeyler yapıyor.
Ancak bunun diğer geliştiricilerin genişletebilmesi için uygun standartlar kullanılarak oluşturulduğundan emin olmak istiyorum.
DI'yi arayüzlerle birlikte ne zaman kullanmalıyım ve ne zaman kullanmamalıyım?
Burada açıklığa kavuşturmak temel bir örnektir.
Sınıf Magento\Core\Helper\Data
böyle bir kurucuya sahiptir:
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;
}
Sorum var var \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
(aynı yapıcıda başkaları olduğunu biliyorum, ama bir açıklama bence tüm vakalara uyacaktır).
Göre di.xml
çekirdek modülünden var bir örneği olacaktır Magento\Framework\App\Config
:
<preference for="Magento\Framework\App\Config\ScopeConfigInterface" type="Magento\Framework\App\Config" />
ama ihtiyacım olursa bunu kolayca değiştirebilirim.
Kodumda böyle arayüzleri ne zaman kullanmalıyım?
Bu tür arayüzleri kullandığım bu eksik örnek modülü (reklam için özür dilerim) oluşturdum , ancak hepsi çekirdekten geliyor. Ben kendiminkini yaratmadım. Yapmalımıyım?