![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/framework/Config/Data/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Framework\Config\Data; use Magento\Framework\Serialize\SerializerInterface; use Magento\Framework\App\ObjectManager; /** * Provides scoped configuration * @api * @since 100.0.2 */ class Scoped extends \Magento\Framework\Config\Data { /** * Configuration scope resolver * * @var \Magento\Framework\Config\ScopeInterface */ protected $_configScope; /** * Configuration reader * * @var \Magento\Framework\Config\ReaderInterface */ protected $_reader; /** * Configuration cache * * @var \Magento\Framework\Config\CacheInterface */ protected $_cache; /** * Cache tag * * @var string */ protected $_cacheId; /** * Scope priority loading scheme * * @var string[] */ protected $_scopePriorityScheme = []; /** * Loaded scopes * * @var array */ protected $_loadedScopes = []; /** * @var SerializerInterface */ private $serializer; /** * Constructor * * @param \Magento\Framework\Config\ReaderInterface $reader * @param \Magento\Framework\Config\ScopeInterface $configScope * @param \Magento\Framework\Config\CacheInterface $cache * @param string $cacheId * @param SerializerInterface|null $serializer */ public function __construct( \Magento\Framework\Config\ReaderInterface $reader, \Magento\Framework\Config\ScopeInterface $configScope, \Magento\Framework\Config\CacheInterface $cache, $cacheId, SerializerInterface $serializer = null ) { $this->_reader = $reader; $this->_configScope = $configScope; $this->_cache = $cache; $this->_cacheId = $cacheId; $this->serializer = $serializer ?: ObjectManager::getInstance()->get(SerializerInterface::class); } /** * Get config value by key * * @param string $path * @param mixed $default * @return array|mixed|null */ public function get($path = null, $default = null) { $this->_loadScopedData(); return parent::get($path, $default); } /** * Load data for current scope * * @return void */ protected function _loadScopedData() { $scope = $this->_configScope->getCurrentScope(); if (false == isset($this->_loadedScopes[$scope])) { if (false == in_array($scope, $this->_scopePriorityScheme)) { $this->_scopePriorityScheme[] = $scope; } foreach ($this->_scopePriorityScheme as $scopeCode) { if (false == isset($this->_loadedScopes[$scopeCode])) { if ($scopeCode !== 'primary' && ($data = $this->_cache->load($scopeCode . '::' . $this->_cacheId)) ) { $data = $this->serializer->unserialize($data); } else { $data = $this->_reader->read($scopeCode); if ($scopeCode !== 'primary') { $this->_cache->save( $this->serializer->serialize($data), $scopeCode . '::' . $this->_cacheId ); } } $this->merge($data); $this->_loadedScopes[$scopeCode] = true; } if ($scopeCode == $scope) { break; } } } } }