Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
NamespaceResolver.php
Go to the documentation of this file.
1 <?php
6 namespace Magento\Widget\Model;
7 
9 {
15  protected $moduleNamespaces;
16 
20  protected $moduleList;
21 
25  public function __construct(\Magento\Framework\Module\ModuleListInterface $moduleList)
26  {
27  $this->moduleList = $moduleList;
28  }
29 
38  public function determineOmittedNamespace($name, $asFullModuleName = false)
39  {
40  $this->prepareModuleNamespaces();
41  $name = $this->prepareName($name);
42 
43  $partsNum = count($name);
44  $defaultNamespaceFlag = false;
45  foreach ($this->moduleNamespaces as $namespaceName => $namespace) {
46  // assume the namespace is omitted (default namespace only, which comes first)
47  if ($defaultNamespaceFlag === false) {
48  $defaultNamespaceFlag = true;
49  $defaultNS = $namespaceName . '_' . $name[0];
50  if (isset($namespace[$defaultNS])) {
51  return $asFullModuleName ? $namespace[$defaultNS] : $name[0]; // return omitted as well
52  }
53  }
54  // assume namespace is qualified
55  if (isset($name[1])) {
56  $fullNS = $name[0] . '_' . $name[1];
57  if (2 <= $partsNum && isset($namespace[$fullNS])) {
58  return $asFullModuleName ? $namespace[$fullNS] : $fullNS;
59  }
60  }
61  }
62  return '';
63  }
64 
70  protected function prepareModuleNamespaces()
71  {
72  if (null === $this->moduleNamespaces) {
73  $this->moduleNamespaces = [];
74  foreach ($this->moduleList->getNames() as $moduleName) {
75  $module = strtolower($moduleName);
76  $this->moduleNamespaces[substr($module, 0, strpos($module, '_'))][$module] = $moduleName;
77  }
78  }
79  }
80 
87  protected function prepareName($name)
88  {
89  $explodeString = strpos($name, '\\') === false ? '_' : '\\';
90  return explode($explodeString, strtolower($name));
91  }
92 }
__construct(\Magento\Framework\Module\ModuleListInterface $moduleList)
determineOmittedNamespace($name, $asFullModuleName=false)
if(!isset($_GET['name'])) $name
Definition: log.php:14