b374k
m1n1 1.01
Apache/2.4.41 (Ubuntu)
Linux vmi616275.contaboserver.net 5.4.0-84-generic #94-Ubuntu SMP Thu Aug 26 20:27:37 UTC 2021 x86_64
uid=33(www-data) gid=33(www-data) groups=33(www-data)
server ip : 62.171.164.128 | your ip : 127.0.0.1
safemode OFF
 >  / home / dev2.destoffenstraat.com / vendor / magento / framework / Convert /
Filename/home/dev2.destoffenstraat.com/vendor/magento/framework/Convert/ConvertArray.php
Size3.42 kb
Permissionrw-r--r--
Ownerroot : root
Create time17-Aug-2025 10:26
Last modified07-Jan-2021 21:08
Last accessed21-Aug-2025 18:30
Actionsedit | rename | delete | download (gzip)
Viewtext | code | image
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/

namespace Magento\Framework\Convert;

use Magento\Framework\Exception\LocalizedException;

/**
* Convert the array data to SimpleXMLElement object
*/
class ConvertArray
{
/**
* Transform an assoc array to \SimpleXMLElement object
* Array has some limitations. Appropriate exceptions will be thrown
*
* @param array $array
* @param string $rootName
* @return \SimpleXMLElement
* @throws LocalizedException
*/
public function assocToXml(array $array, $rootName = '_')
{
if (empty($rootName) || is_numeric($rootName)) {
throw new LocalizedException(
new \Magento\Framework\Phrase(
"The root element can't be empty or use numbers. Change the element and try again."
)
);
}

$xmlStr = <<<XML
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<$rootName></$rootName>
XML;
$xml = new \SimpleXMLElement($xmlStr);
foreach (array_keys($array) as $key) {
if (is_numeric($key)) {
throw new LocalizedException(
new \Magento\Framework\Phrase('An error occurred. Use non-numeric array root keys and try again.')
);
}
}
return self::_assocToXml($array, $rootName, $xml);
}

/**
* Convert nested array into flat array.
*
* @param array $data
* @return array
*/
public static function toFlatArray($data)
{
foreach ($data as $key => $value) {
if (is_array($value)) {
$value = self::toFlatArray($value);
unset($data[$key]);
$data = array_merge($data, $value);
}
}
return $data;
}

/**
* Function, that actually recursively transforms array to xml
*
* @param array $array
* @param string $rootName
* @param \SimpleXMLElement $xml
* @return \SimpleXMLElement
* @throws LocalizedException
*/
private function _assocToXml(array $array, $rootName, \SimpleXMLElement $xml)
{
$hasNumericKey = false;
$hasStringKey = false;
foreach ($array as $key => $value) {
if (!is_array($value)) {
if (is_string($key)) {
if ($key === $rootName) {
throw new LocalizedException(
new \Magento\Framework\Phrase(
"An associative key can't be the same as its parent associative key. "
. "Verify and try again."
)
);
}
$hasStringKey = true;
$xml->addChild($key, $value);
} elseif (is_int($key)) {
$hasNumericKey = true;
$xml->addChild($key, $value);
}
} else {
$xml->addChild($key);
self::_assocToXml($value, $key, $xml->{$key});
}
}
if ($hasNumericKey && $hasStringKey) {
throw new LocalizedException(
new \Magento\Framework\Phrase(
"Associative and numeric keys can't be mixed at one level. Verify and try again."
)
);
}
return $xml;
}
}