1 | <?php |
||
14 | class Metric |
||
15 | { |
||
16 | /** |
||
17 | * The ID for the Event to select data from. Omitted for global metrics that |
||
18 | * are not relative to a specific Event, i.e. "overall revenue" |
||
19 | * @var integer |
||
20 | */ |
||
21 | private $eventId; |
||
22 | |||
23 | /** |
||
24 | * The aggregation function for the numerator of the metric. 'unique' measures |
||
25 | * the number of unique visitors/sessions that include the specified Event. 'count' measures the total number of occurrences of Event for the scope (visitor/session). 'sum' is the sum of the 'field' value |
||
26 | * Can be unique, count or sum |
||
27 | * @var type |
||
28 | */ |
||
29 | private $aggregator; |
||
30 | |||
31 | /** |
||
32 | * The field to aggregate for the numerator of the metric. Required when 'aggregator' = 'sum', otherwise omitted |
||
33 | * Can be revenue or value |
||
34 | * @var string |
||
35 | */ |
||
36 | private $field; |
||
37 | |||
38 | /** |
||
39 | * Specifies how Events should be grouped together. Can also be thought of |
||
40 | * as the denonimator of the metric. 'session' divides by the number of sessions. |
||
41 | * "Influenced sessions", or sessions that do not contain a decision Event but |
||
42 | * carry a decision from a previous session are not included in counts for |
||
43 | * numerator or denominator. 'visitor' divides by the number of visitors. |
||
44 | * 'event' divides by the total occurrences (impressions) of the specified Event |
||
45 | * Can be session, visitor or event |
||
46 | * @var string |
||
47 | */ |
||
48 | private $scope; |
||
49 | |||
50 | /** |
||
51 | * The winning direction of this metric |
||
52 | */ |
||
53 | private $winningDirection; |
||
54 | |||
55 | /** |
||
56 | * Constructor. |
||
57 | */ |
||
58 | 14 | public function __construct($options = array()) |
|
59 | { |
||
60 | 14 | foreach ($options as $name=>$value) { |
|
61 | switch ($name) { |
||
62 | 12 | case 'event_id': $this->setEventId($value); break; |
|
63 | 12 | case 'aggregator': $this->setAggregator($value); break; |
|
64 | 12 | case 'field': $this->setField($value); break; |
|
65 | 12 | case 'scope': $this->setScope($value); break; |
|
66 | case 'winning_direction' : $this->setWinningDirection($value); break; |
||
67 | default: |
||
68 | throw new Exception('Unknown option found in the Metric entity: ' . $name); |
||
69 | } |
||
70 | 14 | } |
|
71 | 14 | } |
|
72 | |||
73 | /** |
||
74 | * Returns this object as array. |
||
75 | */ |
||
76 | 6 | public function toArray() |
|
77 | { |
||
78 | $options = array( |
||
79 | 6 | 'event_id' => $this->getEventId(), |
|
80 | 6 | 'aggregator' => $this->getAggregator(), |
|
81 | 6 | 'field' => $this->getField(), |
|
82 | 6 | 'scope' => $this->getScope(), |
|
83 | 6 | 'winning_direction' => $this->getWinningDirection(), |
|
84 | 6 | ); |
|
85 | |||
86 | // Remove options with empty values |
||
87 | 6 | $cleanedOptions = array(); |
|
88 | 6 | foreach ($options as $name=>$value) { |
|
89 | 6 | if ($value!==null) |
|
90 | 6 | $cleanedOptions[$name] = $value; |
|
91 | 6 | } |
|
92 | |||
93 | 6 | return $cleanedOptions; |
|
94 | } |
||
95 | |||
96 | 6 | public function getEventId() |
|
100 | |||
101 | 14 | public function setEventId($eventId) |
|
105 | |||
106 | 7 | public function getAggregator() |
|
110 | |||
111 | 14 | public function setAggregator($aggregator) |
|
115 | |||
116 | 6 | public function getField() |
|
120 | |||
121 | 14 | public function setField($field) |
|
125 | |||
126 | 8 | public function getScope() |
|
130 | |||
131 | 14 | public function setScope($scope) |
|
135 | |||
136 | 6 | public function getWinningDirection() |
|
140 | |||
141 | public function setWinningDirection($winningDirection) |
||
145 | } |
||
146 | |||
147 | |||
151 |
According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.
}
To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.