Completed
Push — master ( 4ef642...49bb93 )
by Julien
02:53
created

ReferenceManager::getReferenceElement()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 8
rs 9.4285
cc 2
eloc 4
nc 2
nop 1
1
<?php
2
/*
3
 * The MIT License
4
 *
5
 * Copyright 2017 Julien Fastré <[email protected]>.
6
 *
7
 * Permission is hereby granted, free of charge, to any person obtaining a copy
8
 * of this software and associated documentation files (the "Software"), to deal
9
 * in the Software without restriction, including without limitation the rights
10
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
 * copies of the Software, and to permit persons to whom the Software is
12
 * furnished to do so, subject to the following conditions:
13
 *
14
 * The above copyright notice and this permission notice shall be included in
15
 * all copies or substantial portions of the Software.
16
 *
17
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23
 * THE SOFTWARE.
24
 */
25
namespace PHPHealth\CDA\Helper;
26
27
use PHPHealth\CDA\Elements\ReferenceElement;
28
use PHPHealth\CDA\Elements\ReferenceType;
29
30
/**
31
 * 
32
 *
33
 * @author Julien Fastré <[email protected]>
34
 */
35
class ReferenceManager
36
{
37
    /**
38
     *
39
     * @var ReferenceType[]
40
     */
41
    private $typeReferences = array();
42
    
43
    /**
44
     *
45
     * @var ReferenceElement[] 
46
     */
47
    private $elementReferences = array();
48
    
49
    public function createReference($name = null)
50
    {
51
        $ref = $name === null ? \uniqid() : $name;
52
        
53
        $this->typeReferences[$ref] = new ReferenceType($ref);
54
        $this->elementReferences[$ref] = new ReferenceElement($ref);
55
    }
56
    
57
    /**
58
     * 
59
     * @param type $ref
60
     * @return ReferenceType
61
     */
62
    public function getReferenceType($ref)
63
    {
64
        if (! array_key_exists($ref, $this->typeReferences)) {
65
            $this->createReference($ref);
66
        }
67
        
68
        return $this->typeReferences[$ref];
69
    }
70
    
71
        /**
72
     * 
73
     * @param type $ref
74
     * @return ReferenceElement
75
     */
76
    public function getReferenceElement($ref)
77
    {
78
        if (! array_key_exists($ref, $this->elementReferences)) {
79
            $this->createReference($ref);
80
        }
81
        
82
        return $this->elementReferences[$ref];
83
    }
84
}
85