/
githubmirror
/
magento2
Обзор
Документация
Войти
/
githubmirror
/
magento2
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
2.4-develop
lib/internal/Magento/Framework/App/Route/Config/Converter.php
87 строк
3 KB
Alexandra Zota
ACP2E-4019: CE copyright updates for 2.4.9-beta1
22 окт 2025, 17:47
22 окт 2025, 17:47
1b769b7
Код
Авторство
О чём код?
<?php /** * Routes configuration converter * * Copyright 2014 Adobe * All Rights Reserved. */ namespace Magento\Framework\App\Route\Config; class Converter implements \Magento\Framework\Config\ConverterInterface { /** * Convert config * * @param \DOMDocument $source * @return array */ public function convert($source) { $output = []; /** @var \DOMNodeList $routers */ $routers = $source->getElementsByTagName('router'); /** @var \DOMNode $router */ foreach ($routers as $router) { $routerConfig = []; foreach ($router->attributes as $attribute) { $routerConfig[$attribute->nodeName] = $attribute->nodeValue; } /** @var \DOMNode $routeData */ foreach ($router->getElementsByTagName('route') as $routeData) { $routeConfig = []; foreach ($routeData->attributes as $routeAttribute) { $routeConfig[$routeAttribute->nodeName] = $routeAttribute->nodeValue; } /** @var \DOMNode $module */ foreach ($routeData->getElementsByTagName('module') as $moduleData) { $moduleConfig = []; foreach ($moduleData->attributes as $moduleAttribute) { $moduleConfig[$moduleAttribute->nodeName] = $moduleAttribute->nodeValue; } $routeConfig['modules'][] = $moduleConfig; } $routeConfig['modules'] = $this->_sortModulesList($routeConfig['modules']); $routerConfig['routes'][$routeData->attributes->getNamedItem('id')->nodeValue] = $routeConfig; } $output[$router->attributes->getNamedItem('id')->nodeValue] = $routerConfig; } return $output; } /** * Sort modules list according to before/after attributes * * @param array $modulesList * @return array */ protected function _sortModulesList($modulesList) { $sortedModulesList = []; foreach ($modulesList as $moduleData) { if (isset($moduleData['before'])) { $position = array_search($moduleData['before'], $sortedModulesList); if ($position === false) { $position = 0; } array_splice($sortedModulesList, $position, 0, $moduleData['name']); } elseif (isset($moduleData['after'])) { $position = array_search($moduleData['after'], $sortedModulesList); if ($position === false) { $position = count($modulesList); } array_splice($sortedModulesList, $position + 1, 0, $moduleData['name']); } else { $sortedModulesList[] = $moduleData['name']; } } return $sortedModulesList; } }