Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Public Member Functions | Data Fields | Protected Member Functions | Protected Attributes
Converter Class Reference
Inheritance diagram for Converter:
ConverterInterface

Public Member Functions

 __construct (ArgumentParser $argumentParser, InterpreterInterface $argumentInterpreter, $argumentNodeName, array $idAttributes=[])
 
 convert ($source)
 

Data Fields

const NAME_ATTRIBUTE = 'name'
 

Protected Member Functions

 convertXml ($elements)
 
 getElementKey (\DOMElement $element)
 
 isKeyAttribute (\DOMElement $element, \DOMAttr $attribute)
 
 getChildNodes (\DOMElement $element)
 
 castNumeric ($nodeValue)
 

Protected Attributes

 $argumentParser
 
 $argumentInterpreter
 
 $argumentNodeName
 
 $idAttributes
 

Detailed Description

Converter for configuration data.

Definition at line 14 of file Converter.php.

Constructor & Destructor Documentation

◆ __construct()

__construct ( ArgumentParser  $argumentParser,
InterpreterInterface  $argumentInterpreter,
  $argumentNodeName,
array  $idAttributes = [] 
)

Constructor for Converter object.

Parameters
ArgumentParser$argumentParser
InterpreterInterface$argumentInterpreter
string$argumentNodeName
array$idAttributes

Definition at line 57 of file Converter.php.

Member Function Documentation

◆ castNumeric()

castNumeric (   $nodeValue)
protected

Cast nodeValue to int or double.

Parameters
string$nodeValue
Returns
float|integer

Definition at line 205 of file Converter.php.

206  {
207  if (is_numeric($nodeValue)) {
208  if (preg_match('/^\d+$/', $nodeValue)) {
209  $nodeValue = (int) $nodeValue;
210  } else {
211  $nodeValue = (double) $nodeValue;
212  }
213  }
214 
215  return $nodeValue;
216  }

◆ convert()

convert (   $source)

Convert XML to array.

Parameters
\DOMDocument$source
Returns
array

Implements ConverterInterface.

Definition at line 75 of file Converter.php.

76  {
77  return $this->convertXml($source->documentElement->childNodes);
78  }
$source
Definition: source.php:23

◆ convertXml()

convertXml (   $elements)
protected

Convert XML node to array or string recursive.

Parameters
\DOMNodeList | array$elements
Returns
array @SuppressWarnings(PHPMD.CyclomaticComplexity)

Definition at line 87 of file Converter.php.

88  {
89  $result = [];
90 
91  foreach ($elements as $element) {
92  if ($element instanceof \DOMElement) {
93  if ($element->getAttribute('remove') == 'true') {
94  // Remove element
95  continue;
96  }
97  if ($element->hasAttribute('xsi:type')) {
98  if ($element->hasAttribute('path')) {
99  $elementData = $this->getAttributes($element);
100  $elementData['value'] = $this->argumentInterpreter->evaluate(
101  $this->argumentParser->parse($element)
102  );
103  unset($elementData['xsi:type'], $elementData['item']);
104  } else {
105  $elementData = $this->argumentInterpreter->evaluate(
106  $this->argumentParser->parse($element)
107  );
108  }
109  } else {
110  $elementData = array_merge(
111  $this->getAttributes($element),
112  $this->getChildNodes($element)
113  );
114  }
115  $key = $this->getElementKey($element);
116  if ($key) {
117  $result[$element->nodeName][$key] = $elementData;
118  } elseif (!empty($elementData)) {
119  $result[$element->nodeName][] = $elementData;
120  }
121  } elseif ($element->nodeType == XML_TEXT_NODE && trim($element->nodeValue) != '') {
122  return ['value' => $element->nodeValue];
123  }
124  }
125 
126  return $result;
127  }
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17
$element
Definition: element.phtml:12

◆ getChildNodes()

getChildNodes ( \DOMElement  $element)
protected

Get child nodes data.

Parameters
\DOMElement$element
Returns
array

Definition at line 190 of file Converter.php.

191  {
192  $children = [];
193  if ($element->hasChildNodes()) {
194  $children = $this->convertXml($element->childNodes);
195  }
196  return $children;
197  }
$children
Definition: actions.phtml:11
$element
Definition: element.phtml:12

◆ getElementKey()

getElementKey ( \DOMElement  $element)
protected

Get key for DOM element

Parameters
\DOMElement$element
Returns
boolean|string

Definition at line 135 of file Converter.php.

136  {
137  if (isset($this->idAttributes[$element->nodeName])) {
138  if ($element->hasAttribute($this->idAttributes[$element->nodeName])) {
139  return $element->getAttribute($this->idAttributes[$element->nodeName]);
140  }
141  }
142  if ($element->hasAttribute(self::NAME_ATTRIBUTE)) {
143  return $element->getAttribute(self::NAME_ATTRIBUTE);
144  }
145  return false;
146  }
$element
Definition: element.phtml:12

◆ isKeyAttribute()

isKeyAttribute ( \DOMElement  $element,
\DOMAttr  $attribute 
)
protected

Verify attribute is main key for element.

Parameters
\DOMElement$element
\DOMAttr$attribute
Returns
boolean

Definition at line 155 of file Converter.php.

156  {
157  if (isset($this->idAttributes[$element->nodeName])) {
158  return $attribute->name == $this->idAttributes[$element->nodeName];
159  } else {
160  return $attribute->name == self::NAME_ATTRIBUTE;
161  }
162  }
$element
Definition: element.phtml:12

Field Documentation

◆ $argumentInterpreter

$argumentInterpreter
protected

Definition at line 33 of file Converter.php.

◆ $argumentNodeName

$argumentNodeName
protected

Definition at line 40 of file Converter.php.

◆ $argumentParser

$argumentParser
protected

Definition at line 26 of file Converter.php.

◆ $idAttributes

$idAttributes
protected

Definition at line 47 of file Converter.php.

◆ NAME_ATTRIBUTE

const NAME_ATTRIBUTE = 'name'

Unique identifier of node.

Definition at line 19 of file Converter.php.


The documentation for this class was generated from the following file: