Passed
Push — master ( f8044c...6aa085 )
by Alexander
03:26
created

ErrorFactory::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 1
dl 0
loc 4
ccs 3
cts 3
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Flugg\Responder;
4
5
use Flugg\Responder\Contracts\ErrorFactory as ErrorFactoryContract;
6
use Flugg\Responder\Contracts\ErrorMessageResolver as ErrorMessageResolverContract;
7
use Flugg\Responder\Contracts\ErrorSerializer;
8
use Flugg\Responder\Contracts\ErrorSerializer as ErrorSerializerContract;
9
10
/**
11
 * A factory class responsible for creating error arrays.
12
 *
13
 * @package flugger/laravel-responder
14
 * @author  Alexander Tømmerås <[email protected]>
15
 * @license The MIT License
16
 */
17
class ErrorFactory implements ErrorFactoryContract
18
{
19
    /**
20
     * A resolver for resolving messages from error codes.
21
     *
22
     * @var \Flugg\Responder\Contracts\ErrorMessageResolver
23
     */
24
    protected $messageResolver;
25
26
    /**
27
     * Construct the factory class.
28
     *
29
     * @param \Flugg\Responder\Contracts\ErrorMessageResolver $messageResolver
30
     */
31 3
    public function __construct(ErrorMessageResolverContract $messageResolver)
32
    {
33 3
        $this->messageResolver = $messageResolver;
34 3
    }
35
36
    /**
37
     * Make an error array from the given error code and message.
38
     *
39
     * @param  \Flugg\Responder\Contracts\ErrorSerializer $serializer
40
     * @param  string|null                                $errorCode
41
     * @param  string|null                                $message
42
     * @param  array|null                                 $data
43
     * @return array
44
     */
45 3
    public function make(ErrorSerializer $serializer, string $errorCode = null, string $message = null, array $data = null): array
46
    {
47 3
        if (isset($errorCode) && ! isset($message)) {
48 1
            $message = $this->messageResolver->resolve($errorCode);
49
        }
50
51 3
        return $serializer->format($errorCode, $message, $data);
52
    }
53
}