/
githubmirror
/
magento2
Обзор
Документация
Войти
/
githubmirror
/
magento2
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
2.4-develop
lib/internal/Magento/Framework/App/Route/Config.php
177 строк
4 KB
Rajesh Kumar
AC-15620: Ensure PHP 8.5 Compatibility with adobe commerce
12 янв 2026, 14:28
12 янв 2026, 14:28
491c19a
Код
Авторство
О чём код?
<?php /** * Copyright 2014 Adobe * All Rights Reserved. */ namespace Magento\Framework\App\Route; use Magento\Framework\ObjectManager\ResetAfterRequestInterface; use Magento\Framework\Serialize\SerializerInterface; /** * Routes configuration model */ class Config implements ConfigInterface, ResetAfterRequestInterface { /** * @var \Magento\Framework\App\Route\Config\Reader */ protected $_reader; /** * @var \Magento\Framework\Cache\FrontendInterface */ protected $_cache; /** * @var string */ protected $_cacheId; /** * @var \Magento\Framework\Config\ScopeInterface */ protected $_configScope; /** * @var \Magento\Framework\App\AreaList */ protected $_areaList; /** * @var array|null */ protected $_routes; /** * @var SerializerInterface|null */ private $serializer; /** * @param Config\Reader $reader * @param \Magento\Framework\Config\CacheInterface $cache * @param \Magento\Framework\Config\ScopeInterface $configScope * @param \Magento\Framework\App\AreaList $areaList * @param string $cacheId */ public function __construct( Config\Reader $reader, \Magento\Framework\Config\CacheInterface $cache, \Magento\Framework\Config\ScopeInterface $configScope, \Magento\Framework\App\AreaList $areaList, $cacheId = 'RoutesConfig' ) { $this->_reader = $reader; $this->_cache = $cache; $this->_cacheId = $cacheId; $this->_configScope = $configScope; $this->_areaList = $areaList; } /** * @inheritDoc */ public function _resetState(): void { $this->_routes = null; $this->serializer = null; } /** * Fetch routes from configs by area code and router id * * @param string $scope * @return array */ protected function _getRoutes($scope = null) { $scope = $scope ?: $this->_configScope->getCurrentScope(); if (isset($this->_routes[$scope])) { return $this->_routes[$scope]; } $cacheId = $scope . '::' . $this->_cacheId; $cachedRoutes = $this->_cache->load($cacheId); if ($cachedRoutes) { $cachedRoutes = $this->getSerializer()->unserialize($cachedRoutes); if (is_array($cachedRoutes)) { $this->_routes[$scope] = $cachedRoutes; return $cachedRoutes; } } $routers = $this->_reader->read($scope); $routes = $routers[$this->_areaList->getDefaultRouter($scope)]['routes'] ?? null; $routesData = $this->getSerializer()->serialize($routes); $this->_cache->save($routesData, $cacheId); $this->_routes[$scope] = $routes; return $routes; } /** * Retrieve route front name * * @param string $routeId * @param null|string $scope * @return string */ public function getRouteFrontName($routeId, $scope = null) { $routes = $this->_getRoutes($scope); $routeId = $routeId ?? ''; return isset($routes[$routeId]) ? $routes[$routeId]['frontName'] : $routeId; } /** * @inheritdoc * * @param string $frontName * @param string $scope * @return bool|int|string */ public function getRouteByFrontName($frontName, $scope = null) { foreach ($this->_getRoutes($scope) as $routeId => $routeData) { if ($routeData['frontName'] == $frontName) { return $routeId; } } return false; } /** * @inheritdoc * * @param string $frontName * @param string $scope * @return string[] */ public function getModulesByFrontName($frontName, $scope = null) { $routes = $this->_getRoutes($scope); $modules = []; foreach ($routes as $routeData) { if ($routeData['frontName'] == $frontName && isset($routeData['modules'])) { $modules = $routeData['modules']; break; } } return array_unique($modules); } /** * Get serializer * * @return \Magento\Framework\Serialize\SerializerInterface */ private function getSerializer() { if ($this->serializer === null) { $this->serializer = \Magento\Framework\App\ObjectManager::getInstance() ->get(SerializerInterface::class); } return $this->serializer; } }