/
githubmirror
/
magento2
Обзор
Документация
Войти
/
githubmirror
/
magento2
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
2.4-develop
lib/internal/Magento/Framework/App/Config/Initial/Reader.php
126 строк
3 KB
Rajesh Kumar
Fix Initial config reader empty result shape and corrupt cache recovery
28 апр 2026, 21:59
28 апр 2026, 21:59
1d8b396
Код
Авторство
О чём код?
<?php /** * Copyright 2014 Adobe * All Rights Reserved. */ namespace Magento\Framework\App\Config\Initial; /** * Default configuration data reader. Reads configuration data from storage */ class Reader { /** * File locator * * @var \Magento\Framework\Config\FileResolverInterface */ protected $_fileResolver; /** * Config converter * * @var \Magento\Framework\Config\ConverterInterface */ protected $_converter; /** * Config file name * * @var string */ protected $_fileName; /** * Class of dom configuration document used for merge * * @var string */ protected $_domDocumentClass; /** * Scope priority loading scheme * * @var array */ protected $_scopePriorityScheme = ['global']; /** * Path to corresponding XSD file with validation rules for config * * @var string */ protected $_schemaFile; /** * @var \Magento\Framework\Config\DomFactory */ private $domFactory; /** * @param \Magento\Framework\Config\FileResolverInterface $fileResolver * @param \Magento\Framework\Config\ConverterInterface $converter * @param SchemaLocator $schemaLocator * @param \Magento\Framework\Config\DomFactory $domFactory * @param string $fileName */ public function __construct( \Magento\Framework\Config\FileResolverInterface $fileResolver, \Magento\Framework\Config\ConverterInterface $converter, SchemaLocator $schemaLocator, \Magento\Framework\Config\DomFactory $domFactory, $fileName = 'config.xml' ) { $this->_schemaFile = $schemaLocator->getSchema(); $this->_fileResolver = $fileResolver; $this->_converter = $converter; $this->domFactory = $domFactory; $this->_fileName = $fileName; } /** * Read configuration scope * * @return array * * @throws \Magento\Framework\Exception\LocalizedException */ public function read() { $fileList = []; foreach ($this->_scopePriorityScheme as $scope) { $directories = $this->_fileResolver->get($this->_fileName, $scope); foreach ($directories as $key => $directory) { $fileList[$key] = $directory; } } if (!count($fileList)) { return ['data' => [], 'metadata' => []]; } /** @var \Magento\Framework\Config\Dom $domDocument */ $domDocument = null; foreach ($fileList as $file) { try { if (!$domDocument) { $domDocument = $this->domFactory->createDom(['xml' => $file, 'schemaFile' => $this->_schemaFile]); } else { $domDocument->merge($file); } } catch (\Magento\Framework\Config\Dom\ValidationException $e) { throw new \Magento\Framework\Exception\LocalizedException( new \Magento\Framework\Phrase( 'The XML in file "%1" is invalid:' . "\n%2\nVerify the XML and try again.", [$file, $e->getMessage()] ) ); } } if ($domDocument) { return $this->_converter->convert($domDocument->getDom()); } return ['data' => [], 'metadata' => []]; } }