สมมติว่าฉันกำลังสร้างส่วนเสริม 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
(ฉันรู้ว่ามีคนอื่นในนวกรรมิกเดียวกัน แต่คำอธิบายเดียวจะเหมาะกับทุกกรณีที่ฉันคิด)
ตามที่di.xml
ได้จากโมดูลหลัก var จะเป็นตัวอย่างของการMagento\Framework\App\Config
:
<preference for="Magento\Framework\App\Config\ScopeConfigInterface" type="Magento\Framework\App\Config" />
แต่ฉันสามารถเปลี่ยนได้อย่างง่ายดายถ้าฉันต้องการ
เมื่อใดที่ฉันควรใช้อินเทอร์เฟซเช่นนั้นในรหัสของฉัน
ฉันได้สร้างโมดูลตัวอย่างที่ไม่สมบูรณ์นี้(ขออภัยสำหรับการโฆษณา) ซึ่งฉันได้ใช้อินเทอร์เฟซดังกล่าว แต่ทั้งหมดมาจากแกนกลาง ฉันไม่ได้สร้างหนึ่งของฉันเอง ฉันควร?