Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Information.php
Go to the documentation of this file.
1 <?php
7 
9 {
13  private $objectManagerConfig;
14 
18  private $pluginList;
19 
23  private $preferences = [];
24 
28  private $virtualTypes = [];
29 
33  private $definitions;
34 
40  public function __construct(
41  \Magento\Framework\ObjectManager\ConfigInterface $objectManagerConfig,
42  \Magento\Framework\ObjectManager\DefinitionInterface $definitions,
43  \Magento\Developer\Model\Di\PluginList $pluginList
44  ) {
45  $this->objectManagerConfig = $objectManagerConfig;
46  $this->definitions = $definitions;
47  $this->pluginList = $pluginList;
48  }
49 
56  public function getPreference($className)
57  {
58  if (!isset($this->preferences[$className])) {
59  $this->preferences[$className] = $this->objectManagerConfig->getPreference($className);
60  }
61  return $this->preferences[$className];
62  }
63 
70  private function getConstructorParameters($className)
71  {
72  $parameters = $this->definitions->getParameters($className);
73  return $parameters;
74  }
75 
82  public function getParameters($className)
83  {
84  $result = [];
85  $diConfiguration = $this->getConfiguredConstructorParameters($className);
86  $originalParameters = $this->isVirtualType($className) ?
87  $this->getConstructorParameters($this->getVirtualTypeBase($className)) :
88  $this->getConstructorParameters($this->getPreference($className));
89 
90  if (!$originalParameters) {
91  return $result;
92  }
93 
94  foreach ($originalParameters as $parameter) {
95  $paramArray = [$parameter[0], $parameter[1], is_array($parameter[3]) ? "<empty array>" : $parameter[3]];
96  if (isset($diConfiguration[$parameter[0]])) {
97  $paramArray[2] = $this->renderParameters($diConfiguration[$parameter[0]]);
98  }
99  $result[] = $paramArray;
100  }
101  return $result;
102  }
103 
110  private function renderParameters($configuredParameter)
111  {
112  $result = null;
113  if (is_array($configuredParameter)) {
114  if (isset($configuredParameter['instance'])) {
115  $result = 'instance of ' . $configuredParameter['instance'];
116  } else {
117  foreach ($configuredParameter as $keyName => $instance) {
118  $result[$keyName] = $this->renderParameters($instance);
119  }
120  }
121  } else {
122  $result = 'string ' . $configuredParameter;
123  }
124  return $result;
125  }
126 
133  private function getConfiguredConstructorParameters($className)
134  {
135  return $this->objectManagerConfig->getArguments($className);
136  }
137 
144  public function getVirtualTypes($className)
145  {
146  $preference = $this->getPreference($className);
147  if (!isset($this->virtualTypes[$className])) {
148  $this->virtualTypes[$className] = [];
149  foreach ($this->objectManagerConfig->getVirtualTypes() as $virtualType => $baseName) {
150  if ($baseName == $className || $baseName == $preference) {
151  $this->virtualTypes[$className][] = $virtualType;
152  }
153  }
154  }
155  return $this->virtualTypes[$className];
156  }
157 
162  public function getPlugins($className)
163  {
164  return $this->pluginList->getPluginsListByClass($className);
165  }
166 
173  public function isVirtualType($className)
174  {
175  $virtualTypes = $this->objectManagerConfig->getVirtualTypes();
176  return isset($virtualTypes[$className]);
177  }
178 
186  {
187  $virtualTypes = $this->objectManagerConfig->getVirtualTypes();
188  if (isset($virtualTypes[$className])) {
189  return $virtualTypes[$className];
190  }
191  return false;
192  }
193 }
if($currentSelectedMethod==$_code) $className
Definition: form.phtml:31
__construct(\Magento\Framework\ObjectManager\ConfigInterface $objectManagerConfig, \Magento\Framework\ObjectManager\DefinitionInterface $definitions, \Magento\Developer\Model\Di\PluginList $pluginList)
Definition: Information.php:40