AnonymousFunction::getParameters()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
eloc 1
c 0
b 0
f 0
dl 0
loc 3
ccs 0
cts 2
cp 0
rs 10
cc 1
nc 1
nop 0
crap 2
1
<?php
2
3
namespace POData\UriProcessor\QueryProcessor;
4
use POData\Common\Messages;
5
6
/**
7
 * Class AnonymousFunction
8
 * @package POData\UriProcessor\QueryProcessor
9
 */
10
class AnonymousFunction
11
{
12
    /**
13
     * An array of parameters to the function represented by this instance
14
     * 
15
     * @var array
16
     */
17
    private $_parameters;
18
19
    /**
20
     * Parameters as string separated by comma
21
     * 
22
     * @var string
23
     */
24
    private $_parametersAsString;
25
26
    /**
27
     * body of the function represented by this instance
28
     * 
29
     * @var string
30
     */
31
    private $_code;
32
33
    /**
34
     * Reference to the anonymous function represented by this instance
35
     * reference will be the name of the function in the form char(0).lamba_n.
36
     * 
37
     * @var string
38
     */
39
    private $_reference = null;
40
41
    /**
42
     * Create new instance of AnonymousFunction
43
     * 
44
     * @param array  $parameters Array of parameters
45
     * @param string $code       Body of the function
46
     */
47
    public function __construct($parameters, $code)
48
    {
49
        $this->_parameters = $parameters;
50
        foreach ($this->_parameters as $parameter) {
51
            if (strpos($parameter, '$') !== 0) {
52
                throw new \InvalidArgumentException(
53
                    Messages::anonymousFunctionParameterShouldStartWithDollarSymbol()
54
                );
55
            } 
56
        }
57
58
        $this->_parametersAsString = implode(', ', $this->_parameters);
59
        $this->_code = $code;
60
    }
61
62
    /**
63
     * Gets function parameters as array.
64
     * 
65
     * @return array
66
     */
67
    public function getParameters()
68
    {
69
        return $this->_parameters;
70
    }
71
72
    /**
73
     * Gets function parameters as string seperated by comma
74
     * 
75
     * @return string
76
     */
77
    public function getParametersAsString()
78
    {
79
        return $this->_parametersAsString;
80
    }
81
82
    /**
83
     * Gets number of parameters
84
     * 
85
     * @return int
86
     */
87
    public function getParametersCount()
88
    {
89
        return count($this->_parameters);
90
    }
91
92
    /**
93
     * Gets function body
94
     * 
95
     * @return string
96
     */
97
    public function getCode()
98
    {
99
        return $this->_code;
100
    }
101
102
    /**
103
     * Gets refernece to the anonymous function.
104
     * 
105
     * @return string
106
     */
107
    public function getReference()
108
    {
109
        if (is_null($this->_reference)) {
0 ignored issues
show
introduced by
The condition is_null($this->_reference) is always false.
Loading history...
110
            $this->_reference = create_function(
111
                $this->_parametersAsString, $this->_code
112
            );
113
        }
114
115
        return $this->_reference;
116
    }
117
}