![]() 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/module-ui/Config/Reader/Definition/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Ui\Config\Reader\Definition; use Magento\Framework\Config\CacheInterface; use Magento\Framework\Serialize\SerializerInterface; use Magento\Ui\Config\Converter; use Magento\Framework\Data\Argument\InterpreterInterface; use Magento\Ui\Config\Reader\Definition; use Magento\Ui\Config\Reader\DefinitionFactory; /** * Read UI Component definition configuration data ang evaluate arguments */ class Data implements \Magento\Framework\Config\DataInterface { const CACHE_ID = 'ui_component_configuration_definition_data'; const SEARCH_PATTERN = '%s.xml'; /** * Config data * * @var array */ private $data = []; /** * @var ReaderFactory */ private $readerFactory; /** * @var CacheInterface */ private $cache; /** * @var string */ private $cacheId; /** * @var SerializerInterface */ private $serializer; /** * Argument interpreter. * * @var InterpreterInterface */ private $argumentInterpreter; /** * @param DefinitionFactory $readerFactory * @param CacheInterface $cache * @param SerializerInterface $serializer * @param InterpreterInterface $argumentInterpreter */ public function __construct( DefinitionFactory $readerFactory, CacheInterface $cache, SerializerInterface $serializer, InterpreterInterface $argumentInterpreter ) { $this->readerFactory = $readerFactory; $this->cache = $cache; $this->serializer = $serializer; $this->argumentInterpreter = $argumentInterpreter; $this->cacheId = static::CACHE_ID; $this->initData(); } /** * Initialise data for configuration * * @return void */ private function initData() { $data = $this->cache->load($this->cacheId); if (false === $data) { /** @var Definition $reader */ $reader = $this->readerFactory->create(); $data = $reader->read(); $this->cache->save($this->serializer->serialize($data), $this->cacheId); } else { $data = $this->serializer->unserialize($data); } if (!empty($data)) { $this->data = $this->evaluateComponentArguments($data); } } /** * Merge config data to the object * * @param array $config * @return void */ public function merge(array $config) { $this->data = array_replace_recursive($this->data, $config); } /** * Get config value by key * * @param string $key * @param mixed $default * @return array|mixed|null */ public function get($key, $default = null) { return $this->data[$key] ?? $default; } /** * Evaluated components data * * @param array $components * @return array */ private function evaluateComponentArguments($components) { foreach ($components as &$component) { $component[Converter::DATA_ATTRIBUTES_KEY] = isset($component[Converter::DATA_ATTRIBUTES_KEY]) ? $component[Converter::DATA_ATTRIBUTES_KEY] : []; $component[Converter::DATA_ARGUMENTS_KEY] = isset($component[Converter::DATA_ARGUMENTS_KEY]) ? $component[Converter::DATA_ARGUMENTS_KEY] : []; foreach ($component[Converter::DATA_ARGUMENTS_KEY] as $argumentName => $argument) { $component[Converter::DATA_ARGUMENTS_KEY][$argumentName] = $this->argumentInterpreter->evaluate($argument); } } return $components; } }