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 | * Constructor. |
||
52 | */ |
||
53 | 14 | public function __construct($options = array()) |
|
54 | { |
||
55 | 14 | foreach ($options as $name=>$value) { |
|
56 | switch ($name) { |
||
57 | 12 | case 'event_id': $this->setEventId($value); break; |
|
58 | 12 | case 'aggregator': $this->setAggregator($value); break; |
|
59 | 12 | case 'field': $this->setField($value); break; |
|
60 | 12 | case 'scope': $this->setScope($value); break; |
|
61 | default: |
||
62 | 12 | throw new Exception('Unknown option found in the Metric entity: ' . $name); |
|
63 | } |
||
64 | } |
||
65 | 14 | } |
|
66 | |||
67 | /** |
||
68 | * Returns this object as array. |
||
69 | */ |
||
70 | 6 | public function toArray() |
|
71 | { |
||
72 | $options = array( |
||
73 | 6 | 'event_id' => $this->getEventId(), |
|
74 | 6 | 'aggregator' => $this->getAggregator(), |
|
75 | 6 | 'field' => $this->getField(), |
|
76 | 6 | 'scope' => $this->getScope(), |
|
77 | ); |
||
78 | |||
79 | // Remove options with empty values |
||
80 | 6 | $cleanedOptions = array(); |
|
81 | 6 | foreach ($options as $name=>$value) { |
|
82 | 6 | if ($value!==null) |
|
83 | 6 | $cleanedOptions[$name] = $value; |
|
84 | } |
||
85 | |||
86 | 6 | return $cleanedOptions; |
|
87 | } |
||
88 | |||
89 | 6 | public function getEventId() |
|
93 | |||
94 | 14 | public function setEventId($eventId) |
|
98 | |||
99 | 7 | public function getAggregator() |
|
103 | |||
104 | 14 | public function setAggregator($aggregator) |
|
108 | |||
109 | 6 | public function getField() |
|
113 | |||
114 | 14 | public function setField($field) |
|
118 | |||
119 | 8 | public function getScope() |
|
123 | |||
124 | 14 | public function setScope($scope) |
|
128 | } |
||
129 | |||
130 | |||
134 |
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.