1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Framework\Cache\Config;
class Converter implements \Magento\Framework\Config\ConverterInterface
{
/**
* Convert dom node tree to array
*
* @param \DOMDocument $source
* @return array
*/
public function convert($source)
{
$output = [];
/** @var \DOMNodeList $types */
$types = $source->getElementsByTagName('type');
/** @var \DOMNode $type */
foreach ($types as $type) {
$typeConfig = [];
foreach ($type->attributes as $attribute) {
$typeConfig[$attribute->nodeName] = $attribute->nodeValue;
}
/** @var \DOMNode $childNode */
foreach ($type->childNodes as $childNode) {
if ($childNode->nodeType == XML_ELEMENT_NODE ||
($childNode->nodeType == XML_CDATA_SECTION_NODE ||
$childNode->nodeType == XML_TEXT_NODE && trim(
$childNode->nodeValue
) != '')
) {
$typeConfig[$childNode->nodeName] = $childNode->nodeValue;
}
}
$output[$type->attributes->getNamedItem('name')->nodeValue] = $typeConfig;
}
return ['types' => $output];
}
}