Passed
Branch master (ea3a4f)
by Enjoys
02:00
created

Parse   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 59
Duplicated Lines 0 %

Test Coverage

Coverage 87.5%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 13
c 1
b 0
f 0
dl 0
loc 59
ccs 14
cts 16
cp 0.875
rs 10
wmc 6

4 Methods

Rating   Name   Duplication   Size   Complexity  
A parse() 0 12 3
A addConfigSource() 0 3 1
A setLogger() 0 3 1
A __construct() 0 3 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Enjoys\Config;
6
7
use Enjoys\Traits\Options;
8
use Psr\Log\LoggerInterface;
9
use Psr\Log\NullLogger;
10
11
/**
12
 * Description of Parse
13
 * @psalm-suppress PropertyNotSetInConstructor
14
 * @author Enjoys
15
 */
16
abstract class Parse implements ParseInterface
17
{
18
    use Options;
19
20
    private ?string $configSource = null;
21
    protected LoggerInterface $logger;
22
23 17
    public function __construct()
24
    {
25 17
        $this->logger = new NullLogger();
26 17
    }
27
28 10
    public function setLogger(LoggerInterface $logger)
29
    {
30 10
        $this->logger = $logger;
31 10
    }
32
33 17
    public function addConfigSource(string $source): void
34
    {
35 17
        $this->configSource = $source;
36 17
    }
37
38 17
    public function parse()
39
    {
40 17
        if (is_null($this->configSource)) {
41
            $this->logger->error('Добавьте данные для парсинга');
42
            return null;
43
        }
44
45 17
        if (!is_file($this->configSource)) {
46 12
            return $this->parseString($this->configSource);
47
        }
48
49 5
        return $this->parseFile($this->configSource);
50
    }
51
52
53
54
//    protected function setError(string $error): void
55
//    {
56
//        $this->errors[] = $error;
57
//    }
58
59
//    public function getErrors(): ?array
60
//    {
61
//        return $this->errors;
62
//    }
63
64
    /**
65
     * @param string $string
66
     * @return mixed
67
     */
68
    abstract protected function parseString(string $string);
69
70
    /**
71
     * @param string $filename
72
     * @return mixed
73
     */
74
    abstract protected function parseFile(string $filename);
75
}
76