![]() 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-developer/Model/Di/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Developer\Model\Di; class Information { /** * @var \Magento\Framework\ObjectManager\ConfigInterface */ private $objectManagerConfig; /** * @var \Magento\Developer\Model\Di\PluginList */ private $pluginList; /** * @var string[] */ private $preferences = []; /** * @var array */ private $virtualTypes = []; /** * @var \Magento\Framework\ObjectManager\DefinitionInterface */ private $definitions; /** * @param \Magento\Framework\ObjectManager\ConfigInterface $objectManagerConfig * @param \Magento\Framework\ObjectManager\DefinitionInterface $definitions * @param \Magento\Developer\Model\Di\PluginList $pluginList */ public function __construct( \Magento\Framework\ObjectManager\ConfigInterface $objectManagerConfig, \Magento\Framework\ObjectManager\DefinitionInterface $definitions, \Magento\Developer\Model\Di\PluginList $pluginList ) { $this->objectManagerConfig = $objectManagerConfig; $this->definitions = $definitions; $this->pluginList = $pluginList; } /** * Get info on the preference for the class * * @param string $className * @return string */ public function getPreference($className) { if (!isset($this->preferences[$className])) { $this->preferences[$className] = $this->objectManagerConfig->getPreference($className); } return $this->preferences[$className]; } /** * Retrieve parameters of the constructor for the preference of the class * * @param string $className * @return array|null */ private function getConstructorParameters($className) { $parameters = $this->definitions->getParameters($className); return $parameters; } /** * Retrieve array of parameters for the class constructor * * @param string $className * @return array */ public function getParameters($className) { $result = []; $diConfiguration = $this->getConfiguredConstructorParameters($className); $originalParameters = $this->isVirtualType($className) ? $this->getConstructorParameters($this->getVirtualTypeBase($className)) : $this->getConstructorParameters($this->getPreference($className)); if (!$originalParameters) { return $result; } foreach ($originalParameters as $parameter) { $paramArray = [$parameter[0], $parameter[1], is_array($parameter[3]) ? "<empty array>" : $parameter[3]]; if (isset($diConfiguration[$parameter[0]])) { $paramArray[2] = $this->renderParameters($diConfiguration[$parameter[0]]); } $result[] = $paramArray; } return $result; } /** * Recursively retrieve array parameters * * @param string $configuredParameter * @return array|null */ private function renderParameters($configuredParameter) { $result = null; if (is_array($configuredParameter)) { if (isset($configuredParameter['instance'])) { $result = 'instance of ' . $configuredParameter['instance']; } else { foreach ($configuredParameter as $keyName => $instance) { $result[$keyName] = $this->renderParameters($instance); } } } else { $result = 'string ' . $configuredParameter; } return $result; } /** * Retrieve configured types of parameters of the constructor for the preference of the class * * @param string $className * @return array|null */ private function getConfiguredConstructorParameters($className) { return $this->objectManagerConfig->getArguments($className); } /** * Retrieve virtual types for the class and the preference of the class * * @param string $className * @return array */ public function getVirtualTypes($className) { $preference = $this->getPreference($className); if (!isset($this->virtualTypes[$className])) { $this->virtualTypes[$className] = []; foreach ($this->objectManagerConfig->getVirtualTypes() as $virtualType => $baseName) { if ($baseName == $className || $baseName == $preference) { $this->virtualTypes[$className][] = $virtualType; } } } return $this->virtualTypes[$className]; } /** * @param string $className * @return array */ public function getPlugins($className) { return $this->pluginList->getPluginsListByClass($className); } /** * Is the class a virtual type * * @param string $className * @return boolean */ public function isVirtualType($className) { $virtualTypes = $this->objectManagerConfig->getVirtualTypes(); return isset($virtualTypes[$className]); } /** * Get base class for the Virtual Type * * @param string $className * @return string|boolean */ public function getVirtualTypeBase($className) { $virtualTypes = $this->objectManagerConfig->getVirtualTypes(); if (isset($virtualTypes[$className])) { return $virtualTypes[$className]; } return false; } }