SoapFactory   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Test Coverage

Coverage 86.67%

Importance

Changes 6
Bugs 0 Features 0
Metric Value
eloc 12
c 6
b 0
f 0
dl 0
loc 35
ccs 13
cts 15
cp 0.8667
rs 10
wmc 4

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A setLogger() 0 3 1
A createSoapCaller() 0 5 1
A createSoapClient() 0 7 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace PhpCfdi\Finkok;
6
7
use Psr\Log\LoggerAwareInterface;
8
use Psr\Log\LoggerInterface;
9
use Psr\Log\NullLogger;
10
use SoapClient;
11
12
class SoapFactory implements LoggerAwareInterface
13
{
14
    /** @var LoggerInterface */
15
    private $logger;
16
17 99
    public function __construct(LoggerInterface $logger = null)
18
    {
19 99
        $this->logger = $logger ?? new NullLogger();
20
    }
21
22 65
    public function createSoapClient(string $wsdlLocation): SoapClient
23
    {
24 65
        return new SoapClient($wsdlLocation, [
25 65
            'features' => SOAP_SINGLE_ELEMENT_ARRAYS,
26 65
            'cache_wsdl' => WSDL_CACHE_MEMORY,
27 65
            'exceptions' => true,
28 65
            'trace' => true,
29 65
        ]);
30
    }
31
32
    /**
33
     * @param string $wsdlLocation
34
     * @param array<mixed> $defaultOptions
35
     * @return SoapCaller
36
     */
37 65
    public function createSoapCaller(string $wsdlLocation, array $defaultOptions): SoapCaller
38
    {
39 65
        $caller = new SoapCaller($this->createSoapClient($wsdlLocation), $defaultOptions);
40 65
        $caller->setLogger($this->logger);
41 65
        return $caller;
42
    }
43
44
    public function setLogger(LoggerInterface $logger): void
45
    {
46
        $this->logger = $logger;
47
    }
48
}
49