AbstractRequest   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 42
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 2
eloc 15
c 1
b 0
f 0
dl 0
loc 42
ccs 16
cts 16
cp 1
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A getParams() 0 3 1
A getXml() 0 24 1
1
<?php
2
3
namespace Graze\WipotecCheckweigherClient\Request;
4
5
use Datetime;
6
use Graze\XmlUtils\XmlConverter;
7
use SimpleXMLElement;
8
9
abstract class AbstractRequest implements RequestInterface
10
{
11
    /**
12
     * @return string
13
     */
14
    abstract protected function getId();
15
16
    /**
17
     * @return mixed[]
18
     */
19 1
    protected function getParams()
20
    {
21 1
        return [];
22
    }
23
24
    /**
25
     * @return string
26
     */
27 2
    public function getXml()
28
    {
29 2
        $now = new Datetime();
30
31
        $data = [
32 2
            'request_id'    => $this->getId(),
33 2
            'date'          => $now->format('Y-m-d'),
34 2
            'time'          => $now->format('H:i:s')
35 2
        ];
36
37 2
        $data += $this->getParams();
38
39
        // Create the base XML then add the data.
40 2
        $baseXml = '<?xml version="1.0" encoding="UTF-8"?><cw:request xmlns:cw="uri:de.checkweigher"></cw:request>';
41 2
        $xmlElement = new SimpleXMLElement($baseXml);
42
43 2
        $xmlConverter = new XmlConverter();
44 2
        $xmlConverter->addArrayAsChildren($data, $xmlElement);
45
46 2
        $xmlContents = $xmlElement->asXML();
47
48 2
        $header = sprintf("\r\n<(len)>%07d</(len)>\r\n", strlen($xmlContents));
49
50 2
        return $header.$xmlContents;
51
    }
52
}
53