PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backups, Restore, Migration & Clone / 4.10.0
WP STAGING – WordPress Backups, Restore, Migration & Clone v4.10.0
4.10.0 4.9.5 4.9.4 4.9.3 4.9.2 4.9.1 4.9.0 4.8.1 trunk 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.10.0 3.2.0 3.3.1 3.3.2 3.3.3 3.4.1 3.4.3 3.5.0 3.6.0 3.7.1 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.8.7 3.9.0 3.9.1 3.9.2 3.9.3 3.9.4 4.0.0 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.0 4.7.0 4.7.1 4.7.2 4.7.3 4.8.0
wp-staging / Framework / Experiments / Experiment.php
wp-staging / Framework / Experiments Last commit date
Experiment.php 4 days ago ExperimentManager.php 4 days ago ExperimentsRegistry.php 4 days ago
Experiment.php
56 lines
1 <?php
2
3 namespace WPStaging\Framework\Experiments;
4
5 /**
6 * Immutable definition of a single A/B experiment. Which variant an installation
7 * belongs to is stored by {@see ExperimentManager}.
8 *
9 * Every variant must offer the same feature set: experiments compare user
10 * experience, never entitlement.
11 */
12 class Experiment
13 {
14 /** @var string */
15 private $id;
16
17 /** @var string[] */
18 private $variants;
19
20 /** @var bool */
21 private $isRunning;
22
23 /**
24 * @param string $id Snake case identifier, also used as the analytics `experiment` value.
25 * @param string[] $variants Variant names, control first. At least two.
26 * @param bool $isRunning False retires the experiment: no new assignments are made,
27 * existing ones keep reporting so past cohorts stay analysable.
28 */
29 public function __construct(string $id, array $variants, bool $isRunning = true)
30 {
31 $this->id = $id;
32 $this->variants = array_values($variants);
33 $this->isRunning = $isRunning;
34 }
35
36 public function getId(): string
37 {
38 return $this->id;
39 }
40
41 public function getVariants(): array
42 {
43 return $this->variants;
44 }
45
46 public function isRunning(): bool
47 {
48 return $this->isRunning;
49 }
50
51 public function hasVariant(string $variant): bool
52 {
53 return in_array($variant, $this->variants, true);
54 }
55 }
56