Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Dom.php
Go to the documentation of this file.
1 <?php
9 
11 {
16  public function convert($source)
17  {
18  $modules = [];
19  $xpath = new \DOMXPath($source);
21  foreach ($xpath->query('/config/module') as $moduleNode) {
22  $moduleData = [];
23  $moduleAttributes = $moduleNode->attributes;
24  $nameNode = $moduleAttributes->getNamedItem('name');
25  if ($nameNode === null) {
26  throw new \Exception('Attribute "name" is required for module node.');
27  }
28  $moduleData['name'] = $nameNode->nodeValue;
29  $versionNode = $moduleAttributes->getNamedItem('setup_version');
30  $moduleData['setup_version'] = $versionNode ? $versionNode->nodeValue : null;
31  $moduleData['sequence'] = [];
33  foreach ($moduleNode->childNodes as $childNode) {
34  switch ($childNode->nodeName) {
35  case 'sequence':
36  $moduleData['sequence'] = $this->_readModules($childNode);
37  break;
38  }
39  }
40  // Use module name as a key in the result array to allow quick access to module configuration
41  $modules[$nameNode->nodeValue] = $moduleData;
42  }
43  return $modules;
44  }
45 
53  protected function _readModules(\DOMNode $node)
54  {
55  $result = [];
57  foreach ($node->childNodes as $childNode) {
58  switch ($childNode->nodeName) {
59  case 'module':
60  $nameNode = $childNode->attributes->getNamedItem('name');
61  if ($nameNode === null) {
62  throw new \Exception('Attribute "name" is required for module node.');
63  }
64  $result[] = $nameNode->nodeValue;
65  break;
66  }
67  }
68  return $result;
69  }
70 }
$source
Definition: source.php:23