สถานการณ์จำลอง: ฉันเป็นผู้พัฒนาโมดูล Magento 2 app/etc
ผมต้องการสร้างแฟ้มการกำหนดค่าใน ฉันต้องการให้ไฟล์นี้ "กำหนดขอบเขต" ตามพื้นที่
app/etc/my_file.xml
app/etc/frontend/my_file.xml
app/etc/adminhtml/my_file.xml
ใน Magento 1 ฉันแค่สร้างconfig.xml
และเป็นในแบบของฉัน การกำหนดขอบเขตพื้นที่เกิดขึ้นในไฟล์ XML นั้นเอง อย่างไรก็ตาม Magento 2 เข้าใกล้สิ่งนี้แตกต่างกันมาก
ใน Magento 2 ฉันควรสร้างไฟล์คลาสใดเพื่ออ่านไฟล์การกำหนดค่าที่กำหนดขอบเขตเหล่านี้ ยังไม่ชัดเจนจากแหล่งที่มาของวีโอไอพี 2 ว่า "วิธีการที่ถูกต้อง" คืออะไร รหัสหลักมีหลายวิธีและไม่มีการทำเครื่องหมายด้วย@api
วิธีใดเลย สิ่งนี้ทำให้ยากที่จะทราบวิธีดำเนินงานภารกิจนักพัฒนาโมดูลทั่วไปนี้ ในฐานะที่เป็นผลข้างเคียงที่สองก็ทำให้ยากที่จะทราบว่าผู้พัฒนาโมดูล Magento ควรอ่านจากไฟล์กำหนดค่าหลักได้อย่างไร
ในอีกด้านหนึ่งดูเหมือนว่า "สิ่งที่ถูกต้อง" ที่จะทำคือสร้างวัตถุตัวอ่านระบบไฟล์ ตัวอย่างเช่น Magento ดูเหมือนว่าจะโหลดimport.xml
ไฟล์ดังต่อไปนี้
#File: vendor/magento/module-import-export/Model/Import/Config/Reader.php
namespace Magento\ImportExport\Model\Import\Config;
class Reader extends \Magento\Framework\Config\Reader\Filesystem
{
public function __construct(
//...
$fileName = 'import.xml',
//...
) {
parent::__construct(
$fileResolver,
$converter,
$schemaLocator,
$validationState,
$fileName,
$idAttributes,
$domDocumentClass,
$defaultScope
);
}
//...
}
Magento\Framework\Config\Reader\Filesystem
คลาสฐานดูเหมือนจะมีรหัสเพื่อแก้ไขขอบเขตพื้นที่
อย่างไรก็ตามไฟล์การกำหนดค่า Magento บางส่วนดูเหมือนจะหลีกเลี่ยงรูปแบบนี้ ในขณะที่มีผู้อ่านสำหรับไฟล์เหล่านี้ ( event.xml
ในตัวอย่างนี้)
vendor/magento/framework/Event/Config/Reader.php
นอกจากนี้ยังมีคลาส "ข้อมูลที่กำหนดขอบเขต" ซึ่งใช้ตัวอ่านเหล่านี้
#File: vendor/magento/framework/Event/Config/Data.php
class Data extends \Magento\Framework\Config\Data\Scoped
{
public function __construct(
\Magento\Framework\Event\Config\Reader $reader,
//...
) {
parent::__construct($reader, $configScope, $cache, $cacheId);
}
}
สิ่งนี้ทำให้ดูเหมือนคลาสผู้อ่านที่กำหนดขอบเขตเป็นสิ่งที่ผู้พัฒนาโมดูลควรสร้าง แต่ไม่ใช่ไฟล์การกำหนดค่าทั้งหมดที่มีเครื่องอ่านที่กำหนดขอบเขตเหล่านี้
มีเส้นทางที่ชัดเจนสำหรับผู้พัฒนาโมดูล Magento 2 หรือไม่? หรือนี่เป็นเพียงบางสิ่งที่ผู้พัฒนาโมดูล Magento 2 ควรเข้าหาด้วยตนเองและความวุ่นวายที่เกิดขึ้น / การโหลดการกำหนดค่าที่ไม่ได้มาตรฐานเป็นเพียงค่าใช้จ่ายในการทำธุรกิจ
เอกสารอย่างเป็นทางการไม่ได้งานที่ดีของการครอบคลุมบางส่วนของชั้นเรียนที่มีอยู่ แต่ไม่มีอะไรที่ประนีประนอมความจริงที่ไม่มีแนวทางที่ชัดเจนเกี่ยวกับการที่ดำเนินงานเป็นรูปธรรมที่เรากำลังคิดว่าจะใช้หรือถ้าคาดหวังก็คือทุกโมดูลตัดสินใจว่าจะทำเช่นนี้ในตัวของมัน ด้วยตัวเอง