Magento 2 DIのベストプラクティス
たとえば、Magento 2拡張機能を構築しているとしましょう。それは非常に素晴らしいものを行うとしましょう。 しかし、他の開発者が拡張できるように、これが適切な標準を使用してビルドされることを確認したいと思います。 インターフェイスと組み合わせてDIを使用する必要がある場合と使用しない場合 ここでそれを明確にするのがコア例です。 クラスに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; } 私の質問はvarに焦点を合わせています\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig(同じコンストラクターに他のものがあることは知っていますが、私が考えるすべてのケースに1つの説明が当てはまります)。 di.xmlコアモジュールによると、varは次のインスタンスになりますMagento\Framework\App\Config。 <preference for="Magento\Framework\App\Config\ScopeConfigInterface" type="Magento\Framework\App\Config" /> 必要に応じて簡単に変更できます。 コードでそのようなインターフェイスを使用する必要があるのはいつですか? …