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

XmlConverter::arrayAddChilds()   C

Complexity

Conditions 12
Paths 12

Size

Total Lines 54
Code Lines 33

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 24
CRAP Score 13.6578

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 12
eloc 33
c 1
b 0
f 0
nc 12
nop 4
dl 0
loc 54
ccs 24
cts 31
cp 0.7742
crap 13.6578
rs 6.9666

How to fix   Long Method    Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

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