Passed
Push — master ( a08a48...8426a1 )
by Esteban De La Fuente
05:58
created

XmlConverter   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 40
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 3
c 1
b 0
f 0
dl 0
loc 40
ccs 4
cts 4
cp 1
rs 10
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A arrayToXml() 0 7 1
A xmlToArray() 0 6 1
1
<?php
2
3
declare(strict_types=1);
4
5
/**
6
 * LibreDTE: Biblioteca PHP (Núcleo).
7
 * Copyright (C) LibreDTE <https://www.libredte.cl>
8
 *
9
 * Este programa es software libre: usted puede redistribuirlo y/o modificarlo
10
 * bajo los términos de la Licencia Pública General Affero de GNU publicada por
11
 * la Fundación para el Software Libre, ya sea la versión 3 de la Licencia, o
12
 * (a su elección) cualquier versión posterior de la misma.
13
 *
14
 * Este programa se distribuye con la esperanza de que sea útil, pero SIN
15
 * GARANTÍA ALGUNA; ni siquiera la garantía implícita MERCANTIL o de APTITUD
16
 * PARA UN PROPÓSITO DETERMINADO. Consulte los detalles de la Licencia Pública
17
 * General Affero de GNU para obtener una información más detallada.
18
 *
19
 * Debería haber recibido una copia de la Licencia Pública General Affero de
20
 * GNU junto a este programa.
21
 *
22
 * En caso contrario, consulte <http://www.gnu.org/licenses/agpl.html>.
23
 */
24
25
namespace libredte\lib\Core\Xml;
26
27
use DOMElement;
28
29
/**
30
 * Clase `XmlConverter` que proporciona métodos para convertir entre arreglos
31
 * PHP y documentos XML, permitiendo generar nodos XML a partir de datos
32
 * estructurados y viceversa.
33
 */
34
class XmlConverter
35
{
36
    /**
37
     * Convierte un arreglo PHP a un documento XML, generando los nodos y
38
     * respetando un espacio de nombres si se proporciona.
39
     *
40
     * @param array $data Arreglo con los datos que se usarán para generar XML.
41
     * @param array|null $namespace Espacio de nombres para el XML (URI y
42
     * prefijo).
43
     * @param DOMElement|null $parent Elemento padre para los nodos, o null
44
     * para que sea la raíz.
45
     * @param XmlDocument $doc El documento raíz del XML que se genera.
46
     * @return XmlDocument
47
     */
48 123
    public static function arrayToXml(
49
        array $data,
50
        ?array $namespace = null,
51
        ?DOMElement $parent = null,
52
        ?XmlDocument $doc = null
53
    ): XmlDocument {
54 123
        return XmlEncoder::encode($data, $namespace, $parent, $doc);
55
    }
56
57
    /**
58
     * Convierte un documento XML a un arreglo PHP.
59
     *
60
     * @param XmlDocument|DOMElement $doc Documento XML que se desea convertir a
61
     * un arreglo de PHP o el elemento donde vamos a hacer la conversión si no
62
     * es el documento XML completo.
63
     * @param array|null $data Arreglo donde se almacenarán los resultados.
64
     * @param bool $twinsAsArray Indica si se deben tratar los nodos gemelos
65
     * como un arreglo.
66
     * @return array Arreglo con la representación del XML.
67
     */
68 89
    public static function xmlToArray(
69
        XmlDocument|DOMElement $doc,
70
        ?array &$data = null,
71
        bool $twinsAsArray = false
72
    ): array {
73 89
        return XmlDecoder::decode($doc, $data, $twinsAsArray);
74
    }
75
}
76