Completed
Push — master ( 68d1eb...a242c7 )
by Oleg
02:30
created

Experiment::getUrlTargeting()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 2
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 4
ccs 2
cts 2
cp 1
crap 1
rs 10
1
<?php
2
/**
3
 * @author Oleg Krivtsov <[email protected]>
4
 * @date 05 October 2016
5
 * @copyright (c) 2016, Web Marketing ROI
6
 */
7
namespace WebMarketingROI\OptimizelyPHP\Resource\v2;
8
9
use WebMarketingROI\OptimizelyPHP\Exception;
10
use WebMarketingROI\OptimizelyPHP\Resource\v2\Schedule;
11
use WebMarketingROI\OptimizelyPHP\Resource\v2\Variation;
12
use WebMarketingROI\OptimizelyPHP\Resource\v2\Change;
13
use WebMarketingROI\OptimizelyPHP\Resource\v2\Metric;
14
use WebMarketingROI\OptimizelyPHP\Resource\v2\UrlTargeting;
15
16
/**
17
 * An Optimizely experiment.
18
 */
19
class Experiment
20
{
21
    /**
22
     * The project the Experiment is in
23
     * @var integer
24
     */
25
    private $projectId;
26
    
27
    /**
28
     * List of IDs of all audiences the Experiment is targeted at
29
     * @var array[integer] 
30
     */
31
    private $audienceIds;
32
    
33
    /**
34
     * The ID for the Campaign that the Experiment is in
35
     * @var integer 
36
     */
37
    private $campaignId;
38
    
39
    /**
40
     * Experiment-level changes that will run before all Variations. Typically 
41
     * this is custom CSS or custom JavaScript.
42
     * @var array[Change] 
43
     */
44
    private $changes;
45
    
46
    /**
47
     * The time the experiment was initially created
48
     * @var string 
49
     */
50
    private $created;
51
    
52
    /**
53
     * The description or hypothesis for an Experiment
54
     * @var string 
55
     */
56
    private $description;
57
    
58
    /**
59
     * Percentage expressed as a number from 0-10000 to hold back from being 
60
     * included in the experiment
61
     * @var integer 
62
     */
63
    private $holdback;
64
    
65
    /**
66
     * Unique string identifier for this experiment within the project.
67
     * @var string
68
     */
69
    private $key;
70
    
71
    /**
72
     * The last time the experiment was modified
73
     * @var string 
74
     */
75
    private $lastModified;
76
    
77
    /**
78
     * An ordered list of metrics to track for the experiment
79
     * @var array[Metric] 
80
     */
81
    private $metrics;
82
    
83
    /**
84
     * Name of the Experiment
85
     * @var string 
86
     */
87
    private $name;
88
    
89
    /**
90
     * The last time the experiment was modified
91
     * @var Schedule 
92
     */
93
    private $schedule;
94
    
95
    /**
96
     * Current state of the experiment. Can be 'active', 'paused' or 'archived'.
97
     * @var string 
98
     */
99
    private $status;
100
    
101
    /**
102
     * A list of Variations that each define an experience to show in the context 
103
     * of the Experiment for the purpose of comparison against each other
104
     * @var array[Variation]
105
     */
106
    private $variations = array();
107
    
108
    /**
109
     * The unique identifier for the Experiment
110
     * @var integer 
111
     */
112
    private $id;
113
    
114
    /**
115
     * Whether or not the Experiment is a classic Experiment
116
     * @var boolean
117
     */
118
    private $isClassic;
119
    
120
    /**
121
     * Indicates whether this is a standalone a/b experiment or an experience within a personalization campaign
122
     * Can be a/b or personalization
123
     * @var string
124
     */
125
    private $type;
126
    
127
    /**
128
     * The audiences that should see this experiment. If the field is null or 
129
     * omitted, the experiment will target everyone. Multiple audiences can be 
130
     * combined with "and" or "or" using the same structure as audience conditions
131
     * @var string 
132
     */
133
    private $audienceConditions;
134
    
135
    /**
136
     * Traffic allocation policy across variations in this experiment
137
     * @var string 
138
     */
139
    private $allocationPolicy;
140
    
141
    /**
142
     * The first time the Experiment was activated
143
     * @var type 
144
     */
145
    private $earliest;
146
    
147
    /**
148
     * A list of Page IDs used in the Experiment. url_targeting or page_ids, but not both.
149
     */
150
    private $pageIds;
151
    
152
    /**
153
     * The last time the Experiment was activated (not present if it is still activated)
154
     * @var type 
155
     */
156
    private $latest;
157
    
158
    /**
159
     * Rules for which URLs this experiment should target. This is an alternative 
160
     * to page_ids, for cases when you don't need to reuse an existing page or 
161
     * target multiple pages. When creating an experiment any variations without 
162
     * a page ID will apply to the URL Targeting page.
163
     * @var type 
164
     */
165
    private $urlTargeting;
166
    
167
    /**
168
     * Constructor.
169
     */
170 7
    public function __construct($options = array())
171
    {
172 7
        foreach ($options as $name=>$value) {
173
            switch ($name) {
174 6
                case 'project_id': $this->setProjectId($value); break;
0 ignored issues
show
Coding Style introduced by
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
Coding Style introduced by
Terminating statement must be on a line by itself

As per the PSR-2 coding standard, the break (or other terminating) statement must be on a line of its own.

switch ($expr) {
     case "A":
         doSomething();
         break; //wrong
     case "B":
         doSomething();
         break; //right
     case "C:":
         doSomething();
         return true; //right
 }

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
175 6
                case 'audience_ids': $this->setAudienceIds($value); break;
0 ignored issues
show
Coding Style introduced by
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
Coding Style introduced by
Terminating statement must be on a line by itself

As per the PSR-2 coding standard, the break (or other terminating) statement must be on a line of its own.

switch ($expr) {
     case "A":
         doSomething();
         break; //wrong
     case "B":
         doSomething();
         break; //right
     case "C:":
         doSomething();
         return true; //right
 }

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
176 6
                case 'campaign_id': $this->setCampaignId($value); break;
0 ignored issues
show
Coding Style introduced by
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
Coding Style introduced by
Terminating statement must be on a line by itself

As per the PSR-2 coding standard, the break (or other terminating) statement must be on a line of its own.

switch ($expr) {
     case "A":
         doSomething();
         break; //wrong
     case "B":
         doSomething();
         break; //right
     case "C:":
         doSomething();
         return true; //right
 }

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
177 6 View Code Duplication
                case 'changes': {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
Coding Style introduced by
case statements should be defined using a colon.

As per the PSR-2 coding standard, case statements should not be wrapped in curly braces. There is no need for braces, since each case is terminated by the next break.

There is also the option to use a semicolon instead of a colon, this is discouraged because many programmers do not even know it works and the colon is universal between programming languages.

switch ($expr) {
    case "A": { //wrong
        doSomething();
        break;
    }
    case "B"; //wrong
        doSomething();
        break;
    case "C": //right
        doSomething();
        break;
}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
178 6
                    $changes = array();
179 6
                    foreach ($value as $changeInfo) {
180 6
                        $changes[] = new Change($changeInfo);
181
                    }
182 6
                    $this->setChanges($changes); 
183 6
                    break;
184
                }
185 6
                case 'created': $this->setCreated($value); break;    
0 ignored issues
show
Coding Style introduced by
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
Coding Style introduced by
Terminating statement must be on a line by itself

As per the PSR-2 coding standard, the break (or other terminating) statement must be on a line of its own.

switch ($expr) {
     case "A":
         doSomething();
         break; //wrong
     case "B":
         doSomething();
         break; //right
     case "C:":
         doSomething();
         return true; //right
 }

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
186 6
                case 'description': $this->setDescription($value); break;    
0 ignored issues
show
Coding Style introduced by
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
Coding Style introduced by
Terminating statement must be on a line by itself

As per the PSR-2 coding standard, the break (or other terminating) statement must be on a line of its own.

switch ($expr) {
     case "A":
         doSomething();
         break; //wrong
     case "B":
         doSomething();
         break; //right
     case "C:":
         doSomething();
         return true; //right
 }

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
187 6
                case 'holdback': $this->setHoldback($value); break;    
0 ignored issues
show
Coding Style introduced by
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
Coding Style introduced by
Terminating statement must be on a line by itself

As per the PSR-2 coding standard, the break (or other terminating) statement must be on a line of its own.

switch ($expr) {
     case "A":
         doSomething();
         break; //wrong
     case "B":
         doSomething();
         break; //right
     case "C:":
         doSomething();
         return true; //right
 }

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
188 6
                case 'key': $this->setKey($value); break;    
0 ignored issues
show
Coding Style introduced by
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
Coding Style introduced by
Terminating statement must be on a line by itself

As per the PSR-2 coding standard, the break (or other terminating) statement must be on a line of its own.

switch ($expr) {
     case "A":
         doSomething();
         break; //wrong
     case "B":
         doSomething();
         break; //right
     case "C:":
         doSomething();
         return true; //right
 }

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
189 6
                case 'last_modified': $this->setLastModified($value); break;    
0 ignored issues
show
Coding Style introduced by
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
Coding Style introduced by
Terminating statement must be on a line by itself

As per the PSR-2 coding standard, the break (or other terminating) statement must be on a line of its own.

switch ($expr) {
     case "A":
         doSomething();
         break; //wrong
     case "B":
         doSomething();
         break; //right
     case "C:":
         doSomething();
         return true; //right
 }

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
190 6
                case 'metrics': {
0 ignored issues
show
Coding Style introduced by
case statements should be defined using a colon.

As per the PSR-2 coding standard, case statements should not be wrapped in curly braces. There is no need for braces, since each case is terminated by the next break.

There is also the option to use a semicolon instead of a colon, this is discouraged because many programmers do not even know it works and the colon is universal between programming languages.

switch ($expr) {
    case "A": { //wrong
        doSomething();
        break;
    }
    case "B"; //wrong
        doSomething();
        break;
    case "C": //right
        doSomething();
        break;
}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
191 6
                    $metrics = array();
192 6
                    foreach ($value as $metricInfo) {
193 6
                        $metrics[] = new Metric($metricInfo);
194
                    }
195 6
                    $this->setMetrics($metrics); 
196 6
                    break;    
197
                }
198 6
                case 'name': $this->setName($value); break;    
0 ignored issues
show
Coding Style introduced by
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
Coding Style introduced by
Terminating statement must be on a line by itself

As per the PSR-2 coding standard, the break (or other terminating) statement must be on a line of its own.

switch ($expr) {
     case "A":
         doSomething();
         break; //wrong
     case "B":
         doSomething();
         break; //right
     case "C:":
         doSomething();
         return true; //right
 }

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
199 6
                case 'schedule': $this->setSchedule(new Schedule($value)); break;    
0 ignored issues
show
Coding Style introduced by
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
Coding Style introduced by
Terminating statement must be on a line by itself

As per the PSR-2 coding standard, the break (or other terminating) statement must be on a line of its own.

switch ($expr) {
     case "A":
         doSomething();
         break; //wrong
     case "B":
         doSomething();
         break; //right
     case "C:":
         doSomething();
         return true; //right
 }

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
200 6
                case 'status': $this->setStatus($value); break;
0 ignored issues
show
Coding Style introduced by
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
Coding Style introduced by
Terminating statement must be on a line by itself

As per the PSR-2 coding standard, the break (or other terminating) statement must be on a line of its own.

switch ($expr) {
     case "A":
         doSomething();
         break; //wrong
     case "B":
         doSomething();
         break; //right
     case "C:":
         doSomething();
         return true; //right
 }

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
201 6 View Code Duplication
                case 'variations': {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
Coding Style introduced by
case statements should be defined using a colon.

As per the PSR-2 coding standard, case statements should not be wrapped in curly braces. There is no need for braces, since each case is terminated by the next break.

There is also the option to use a semicolon instead of a colon, this is discouraged because many programmers do not even know it works and the colon is universal between programming languages.

switch ($expr) {
    case "A": { //wrong
        doSomething();
        break;
    }
    case "B"; //wrong
        doSomething();
        break;
    case "C": //right
        doSomething();
        break;
}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
202 6
                    $variations = array();
203 6
                    foreach ($value as $variationInfo) {
204 6
                        $variations[] = new Variation($variationInfo);
205
                    }
206 6
                    $this->setVariations($variations); 
207 6
                    break;
208
                }
209 5
                case 'id': $this->setId($value); break;
0 ignored issues
show
Coding Style introduced by
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
Coding Style introduced by
Terminating statement must be on a line by itself

As per the PSR-2 coding standard, the break (or other terminating) statement must be on a line of its own.

switch ($expr) {
     case "A":
         doSomething();
         break; //wrong
     case "B":
         doSomething();
         break; //right
     case "C:":
         doSomething();
         return true; //right
 }

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
210 5
                case 'is_classic': $this->setIsClassic($value); break;                
0 ignored issues
show
Coding Style introduced by
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
Coding Style introduced by
Terminating statement must be on a line by itself

As per the PSR-2 coding standard, the break (or other terminating) statement must be on a line of its own.

switch ($expr) {
     case "A":
         doSomething();
         break; //wrong
     case "B":
         doSomething();
         break; //right
     case "C:":
         doSomething();
         return true; //right
 }

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
211 1
                case 'type': $this->setType($value); break;
0 ignored issues
show
Coding Style introduced by
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
Coding Style introduced by
Terminating statement must be on a line by itself

As per the PSR-2 coding standard, the break (or other terminating) statement must be on a line of its own.

switch ($expr) {
     case "A":
         doSomething();
         break; //wrong
     case "B":
         doSomething();
         break; //right
     case "C:":
         doSomething();
         return true; //right
 }

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
212 1
                case 'audience_conditions': $this->setAudienceConditions($value); break;
0 ignored issues
show
Coding Style introduced by
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
Coding Style introduced by
Terminating statement must be on a line by itself

As per the PSR-2 coding standard, the break (or other terminating) statement must be on a line of its own.

switch ($expr) {
     case "A":
         doSomething();
         break; //wrong
     case "B":
         doSomething();
         break; //right
     case "C:":
         doSomething();
         return true; //right
 }

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
213
                case 'allocation_policy': $this->setAllocationPolicy($value); break;
0 ignored issues
show
Coding Style introduced by
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
Coding Style introduced by
Terminating statement must be on a line by itself

As per the PSR-2 coding standard, the break (or other terminating) statement must be on a line of its own.

switch ($expr) {
     case "A":
         doSomething();
         break; //wrong
     case "B":
         doSomething();
         break; //right
     case "C:":
         doSomething();
         return true; //right
 }

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
214
                case 'earliest': $this->setEarliest($value); break;
0 ignored issues
show
Coding Style introduced by
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
Coding Style introduced by
Terminating statement must be on a line by itself

As per the PSR-2 coding standard, the break (or other terminating) statement must be on a line of its own.

switch ($expr) {
     case "A":
         doSomething();
         break; //wrong
     case "B":
         doSomething();
         break; //right
     case "C:":
         doSomething();
         return true; //right
 }

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
215
                case 'page_ids': $this->setPageIds($value); break;
0 ignored issues
show
Coding Style introduced by
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
Coding Style introduced by
Terminating statement must be on a line by itself

As per the PSR-2 coding standard, the break (or other terminating) statement must be on a line of its own.

switch ($expr) {
     case "A":
         doSomething();
         break; //wrong
     case "B":
         doSomething();
         break; //right
     case "C:":
         doSomething();
         return true; //right
 }

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
216
                case 'latest': $this->setLatest($value); break;
0 ignored issues
show
Coding Style introduced by
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
Coding Style introduced by
Terminating statement must be on a line by itself

As per the PSR-2 coding standard, the break (or other terminating) statement must be on a line of its own.

switch ($expr) {
     case "A":
         doSomething();
         break; //wrong
     case "B":
         doSomething();
         break; //right
     case "C:":
         doSomething();
         return true; //right
 }

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
217
                case 'url_targeting': $this->setUrlTargeting(new UrlTargeting($value)); break;
0 ignored issues
show
Coding Style introduced by
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
Coding Style introduced by
Terminating statement must be on a line by itself

As per the PSR-2 coding standard, the break (or other terminating) statement must be on a line of its own.

switch ($expr) {
     case "A":
         doSomething();
         break; //wrong
     case "B":
         doSomething();
         break; //right
     case "C:":
         doSomething();
         return true; //right
 }

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
218
                default:
219 6
                    throw new Exception('Unknown option found in the Experiment entity: ' . $name);
220
            }
221
        }
222 7
    }
223
    
224
    /**
225
     * Returns this object as array.
226
     */
227 3
    public function toArray()
228
    {
229
        $options = array(
230 3
            'project_id' => $this->getProjectId(),
231 3
            'audience_ids' => $this->getAudienceIds(),
232 3
            'campaign_id' => $this->getCampaignId(),
233 3
            'created' => $this->getCreated(),
234 3
            'description' => $this->getDescription(),
235 3
            'holdback' => $this->getHoldback(),
236 3
            'key' => $this->getKey(),
237 3
            'last_modified' => $this->getLastModified(),
238 3
            'name' => $this->getName(),
239 3
            'schedule' => $this->getSchedule()?$this->getSchedule()->toArray():null,
240 3
            'status' => $this->getStatus(),            
241 3
            'id' => $this->getId(),
242 3
            'is_classic' => $this->getIsClassic(),
243 3
            'type' => $this->getType(),
244 3
            'audience_conditions' => $this->getAudienceConditions(),  
245 3
            'allocation_policy' => $this->getAllocationPolicy(),
246 3
            'earliest' => $this->getEarliest(),
247 3
            'page_ids' => $this->getPageIds(),
248 3
            'latest' => $this->getLatest(),
249 3
            'url_targeting' => $this->getUrlTargeting(),
250
        );
251
        
252 3
        if ($this->getChanges()) {
253
            
254 3
            $options['changes'] = array();
255
            
256 3
            foreach ($this->getChanges() as $change) {
257 3
                $options['changes'][] = $change->toArray();
258
            }
259
        }
260
        
261 3
        if ($this->getMetrics()) {
262
            
263 3
            $options['metrics'] = array();
264
            
265 3
            foreach ($this->getMetrics() as $metric) {
266 3
                $options['metrics'][] = $metric->toArray();
267
            }
268
        }
269
        
270 3
        if ($this->getVariations()) {
271
            
272 3
            $options['variations'] = array();
273
            
274 3
            foreach ($this->getVariations() as $variation) {
275 3
                $options['variations'][] = $variation->toArray();
276
            }
277
        }
278
        
279
        // Remove options with empty values
280 3
        $cleanedOptions = array();
281 3
        foreach ($options as $name=>$value) {
282 3
            if ($value!==null)
283 3
                $cleanedOptions[$name] = $value;
284
        }
285
        
286 3
        return $cleanedOptions;
287
    }
288
    
289 5
    public function getProjectId()
290
    {
291 5
        return $this->projectId;
292
    }
293
    
294 7
    public function setProjectId($projectId)
295
    {
296 7
        $this->projectId = $projectId;
297 7
    }
298
    
299 4
    public function getAudienceIds()
300
    {
301 4
        return $this->audienceIds;
302
    }
303
    
304 7
    public function setAudienceIds($audienceIds)
305
    {
306 7
        $this->audienceIds = $audienceIds;
307 7
    }
308
    
309 4
    public function getCampaignId()
310
    {
311 4
        return $this->campaignId;
312
    }
313
    
314 7
    public function setCampaignId($campaignId)
315
    {
316 7
        $this->campaignId = $campaignId;
317 7
    }
318
    
319 4
    public function getChanges()
320
    {
321 4
        return $this->changes;
322
    }
323
    
324 7
    public function setChanges($changes)
325
    {
326 7
        $this->changes = $changes;
327 7
    }
328
    
329 4
    public function getCreated()
330
    {
331 4
        return $this->created;
332
    }
333
    
334 5
    public function setCreated($created)
335
    {
336 5
        $this->created = $created;
337 5
    }
338
    
339 4
    public function getDescription()
340
    {
341 4
        return $this->description;
342
    }
343
    
344 7
    public function setDescription($description)
345
    {
346 7
        $this->description = $description;
347 7
    }
348
    
349 4
    public function getHoldback()
350
    {
351 4
        return $this->holdback;
352
    }
353
    
354 7
    public function setHoldback($holdback)
355
    {
356 7
        $this->holdback = $holdback;
357 7
    }
358
    
359 4
    public function getKey()
360
    {
361 4
        return $this->key;
362
    }
363
    
364 7
    public function setKey($key)
365
    {
366 7
        $this->key = $key;
367 7
    }
368
    
369 4
    public function getLastModified()
370
    {
371 4
        return $this->lastModified;
372
    }
373
    
374 5
    public function setLastModified($lastModified)
375
    {
376 5
        $this->lastModified = $lastModified;
377 5
    }
378
    
379 4
    public function getMetrics()
380
    {
381 4
        return $this->metrics;
382
    }
383
    
384 7
    public function setMetrics($metrics)
385
    {
386 7
        $this->metrics = $metrics;
387 7
    }
388
    
389 7
    public function getName()
390
    {
391 7
        return $this->name;
392
    }
393
    
394 7
    public function setName($name)
395
    {
396 7
        $this->name = $name;
397 7
    }
398
    
399 4
    public function getSchedule()
400
    {
401 4
        return $this->schedule;
402
    }
403
    
404 7
    public function setSchedule($schedule)
405
    {
406 7
        $this->schedule = $schedule;
407 7
    }
408
    
409 4
    public function getStatus()
410
    {
411 4
        return $this->status;
412
    }
413
    
414 7
    public function setStatus($status)
415
    {
416 7
        $this->status = $status;
417 7
    }
418
    
419 4
    public function getVariations()
420
    {
421 4
        return $this->variations;
422
    }
423
    
424 7
    public function setVariations($variations)
425
    {
426 7
        $this->variations = $variations;
427 7
    }
428
    
429 4
    public function getId()
430
    {
431 4
        return $this->id;
432
    }
433
    
434 5
    public function setId($id)
435
    {
436 5
        $this->id = $id;
437 5
    }
438
    
439 4
    public function getIsClassic()
440
    {
441 4
        return $this->isClassic;
442
    }
443
    
444 5
    public function setIsClassic($isClassic)
445
    {
446 5
        $this->isClassic = $isClassic;
447 5
    }
448
    
449 3
    public function getType()
450
    {
451 3
        return $this->type;
452
    }
453
    
454 2
    public function setType($type)
455
    {
456 2
        $this->type = $type;
457 2
    }
458
    
459 3
    public function getAudienceConditions()
460
    {
461 3
        return $this->audienceConditions;
462
    }
463
    
464 2
    public function setAudienceConditions($audienceConditions)
465
    {
466 2
        $this->audienceConditions = $audienceConditions;
467 2
    }
468
    
469
    public function getConfig()
470
    {
471
        return $this->config;
0 ignored issues
show
Bug introduced by
The property config does not exist. Did you maybe forget to declare it?

In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:

class MyClass { }

$x = new MyClass();
$x->foo = true;

Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion:

class MyClass {
    public $foo;
}

$x = new MyClass();
$x->foo = true;
Loading history...
472
    }
473
    
474
    public function setConfig($config)
475
    {
476
        $this->config = $config;
477
    }
478
    
479 3
    public function getAllocationPolicy()
480
    {
481 3
        return $this->allocationPolicy;
482
    }
483
    
484
    public function setAllocationPolicy($allocationPolicy)
485
    {
486
        $this->allocationPolicy = $allocationPolicy;
487
    }
488
    
489 3
    public function getEarliest()
490
    {
491 3
        return $this->earliest;
492
    }
493
    
494
    public function setEarliest($earliest)
495
    {
496
        $this->earliest = $earliest;
497
    }
498
    
499 3
    public function getPageIds()
500
    {
501 3
        return $this->pageIds;
502
    }
503
    
504
    public function setPageIds($pageIds)
505
    {
506
        $this->pageIds = $pageIds;
507
    }
508
    
509 3
    public function getLatest()
510
    {
511 3
        return $this->latest;
512
    }
513
    
514
    public function setLatest($latest)
515
    {
516
        $this->latest = $latest;
517
    }
518
    
519 3
    public function getUrlTargeting()
520
    {
521 3
        return $this->urlTargeting;
522
    }
523
    
524
    public function setUrlTargeting($urlTargeting)
525
    {
526
        $this->urlTargeting = $urlTargeting;
527
    }
528
}
529
530