3
Magento 2:模块开发人员应如何读取自己的配置文件
场景:我是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中,我应该创建什么类文件来读取这些作用域配置文件。从Magento 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 …