Passed
Branch 3.0.0 (98e096)
by Pieter
02:47
created

ApieCore   A

Complexity

Total Complexity 11

Size/Duplication

Total Lines 88
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 33
c 1
b 0
f 0
dl 0
loc 88
rs 10
wmc 11

7 Methods

Rating   Name   Duplication   Size   Complexity  
A getResourceRetriever() 0 8 2
A getApiResourceMetadataFactory() 0 9 2
A getApiResourceFacade() 0 8 1
A getResourcePersister() 0 8 2
A getIdentifierExtractor() 0 6 2
A getClassResourceConverter() 0 6 1
A __construct() 0 3 1
1
<?php
2
3
namespace W2w\Lib\Apie;
4
5
use W2w\Lib\Apie\Resources\ApiResources;
6
7
/**
8
 * Used by Apie to create the general Apie classes which you are not supposed to override in a plugin.
9
 *
10
 * @internal
11
 */
12
class ApieCore
13
{
14
    /**
15
     * @var Apie
16
     */
17
    private $apie;
18
19
    /**
20
     * @var ApiResourceRetriever|null
21
     */
22
    private $retriever;
23
24
    /**
25
     * @var ApiResourcePersister|null
26
     */
27
    private $persister;
28
29
    /**
30
     * @var ApiResourceMetadataFactory|null
31
     */
32
    private $metadataFactory;
33
34
    /**
35
     * @var IdentifierExtractor|null
36
     */
37
    private $identifierExtractor;
38
39
    public function __construct(Apie $apie)
40
    {
41
        $this->apie = $apie;
42
    }
43
44
    public function getApiResourceFacade(): ApiResourceFacade
45
    {
46
        return new ApiResourceFacade(
47
            $this->getResourceRetriever(),
48
            $this->getResourcePersister(),
49
            $this->getClassResourceConverter(),
50
            $this->apie->getResourceSerializer(),
51
            $this->apie->getFormatRetriever()
52
        );
53
    }
54
55
    public function getResourceRetriever(): ApiResourceRetriever
56
    {
57
        if (!$this->retriever) {
58
            $this->retriever = new ApiResourceRetriever(
59
                $this->getApiResourceMetadataFactory()
60
            );
61
        }
62
        return $this->retriever;
63
    }
64
65
    public function getResourcePersister(): ApiResourcePersister
66
    {
67
        if (!$this->persister) {
68
            $this->persister = new ApiResourcePersister(
69
                $this->getApiResourceMetadataFactory()
70
            );
71
        }
72
        return $this->persister;
73
    }
74
75
    public function getApiResourceMetadataFactory(): ApiResourceMetadataFactory
76
    {
77
        if (!$this->metadataFactory) {
78
            $this->metadataFactory = new ApiResourceMetadataFactory(
79
                $this->apie->getAnnotationReader(),
80
                $this->apie->getApiResourceFactory()
81
            );
82
        }
83
        return $this->metadataFactory;
84
    }
85
86
    public function getIdentifierExtractor(): IdentifierExtractor
87
    {
88
        if (!$this->identifierExtractor) {
89
            $this->identifierExtractor = new IdentifierExtractor($this->apie->getPropertyAccessor());
90
        }
91
        return $this->identifierExtractor;
92
    }
93
94
    public function getClassResourceConverter(): ClassResourceConverter
95
    {
96
        return new ClassResourceConverter(
97
            $this->apie->getPropertyConverter(),
98
            new ApiResources($this->apie->getResources()),
99
            $this->apie->isDebug()
100
        );
101
    }
102
}
103