Completed
Push — master ( 175b65...c73746 )
by Alex
18s queued 15s
created

EdmRecordExpression   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 45
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 9
c 1
b 0
f 0
dl 0
loc 45
rs 10
wmc 4

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A getExpressionKind() 0 3 1
A getDeclaredType() 0 3 1
A getProperties() 0 3 1
1
<?php
2
3
4
namespace AlgoWeb\ODataMetadata\Library\Expressions;
5
6
7
use AlgoWeb\ODataMetadata\Enums\ExpressionKind;
8
use AlgoWeb\ODataMetadata\Helpers\RecordExpressionHelpers;
9
use AlgoWeb\ODataMetadata\Interfaces\Expressions\IRecordExpression;
10
use AlgoWeb\ODataMetadata\Interfaces\Expressions\RecordExpression\IPropertyConstructor;
11
use AlgoWeb\ODataMetadata\Interfaces\IStructuredTypeReference;
12
use AlgoWeb\ODataMetadata\Library\EdmElement;
13
14
/**
15
 * Represents an EDM record construction expression.
16
 *
17
 * @package AlgoWeb\ODataMetadata\Library\Expressions
18
 */
19
class EdmRecordExpression extends EdmElement implements IRecordExpression
20
{
21
22
    use RecordExpressionHelpers;
23
    /**
24
     * @var IStructuredTypeReference
25
     */
26
    private $declaredType;
27
    /**
28
     * @var IPropertyConstructor[]
29
     */
30
        private $properties;
31
32
    /**
33
     * Initializes a new instance of the EdmRecordExpression class.
34
     * @param IStructuredTypeReference $declaredType Optional declared type of the record.
35
     * @param IPropertyConstructor ...$properties Property constructors.
36
     */
37
    public function __construct(IStructuredTypeReference $declaredType = null, IPropertyConstructor ...$properties)
38
    {
39
        $this->declaredType = $declaredType;
40
        $this->properties = $properties;
41
    }
42
    /**
43
     * @inheritDoc
44
     */
45
    public function getDeclaredType(): IStructuredTypeReference
46
    {
47
        return $this->declaredType;
48
    }
49
50
    /**
51
     * @inheritDoc
52
     */
53
    public function getProperties(): array
54
    {
55
        return $this->properties;
56
    }
57
58
    /**
59
     * @inheritDoc
60
     */
61
    public function getExpressionKind(): ExpressionKind
62
    {
63
        return ExpressionKind::Record();
64
    }
65
}