Passed
Push — master ( f78dc8...d3e9de )
by Carlos C
46s queued 12s
created

SoapFactory::createSoapCaller()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 3
c 1
b 0
f 0
nc 1
nop 2
dl 0
loc 5
ccs 0
cts 4
cp 0
crap 2
rs 10
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 28
    public function __construct(LoggerInterface $logger = null)
18
    {
19 28
        $this->logger = $logger ?? new NullLogger();
20 28
    }
21
22
    public function createSoapClient(string $wsdlLocation): SoapClient
23
    {
24
        return new SoapClient($wsdlLocation, [
25
            'features' => SOAP_SINGLE_ELEMENT_ARRAYS,
26
            'cache_wsdl' => WSDL_CACHE_MEMORY,
27
            'exceptions' => true,
28
            'trace' => true,
29
        ]);
30
    }
31
32
    public function createSoapCaller(string $wsdlLocation, array $defaultOptions): SoapCaller
33
    {
34
        $caller = new SoapCaller($this->createSoapClient($wsdlLocation), $defaultOptions);
35
        $caller->setLogger($this->logger);
36
        return $caller;
37
    }
38
39
    public function setLogger(LoggerInterface $logger): void
40
    {
41
        $this->logger = $logger;
42
    }
43
}
44