Completed
Pull Request — develop (#1328)
by Naveen
02:55
created

Features_Registry::register_feature_from_slug()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 3
dl 0
loc 7
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Wordlift\Features;
4
5
class Features_Registry {
6
7
	/**
8
	 * @var array<Feature>
9
	 */
10
	private $features = array();
11
12
	private static $instance = null;
13
14
	public static function get_instance() {
15
		if ( self::$instance === null ) {
16
			self::$instance = new Features_Registry();
17
		}
18
19
		return self::$instance;
20
	}
21
22
	/**
23
	 * @param $feature Feature
24
	 */
25
	public function register_feature( $feature ) {
26
		$this->features[] = $feature;
27
	}
28
29
	/**
30
	 * @param $feature_slug string
31
	 * @param $default_value bool
32
	 * @param $callback callable
33
	 */
34
	public function register_feature_from_slug( $feature_slug, $default_value, $callback ) {
35
		$this->features[] = new Feature(
36
			$feature_slug,
37
			$default_value,
38
			$callback
39
		);
40
	}
41
42
	public function initialize_all_features() {
43
44
		foreach ( $this->features as $feature ) {
45
			/**
46
			 * @var $feature Feature
47
			 */
48
			$feature_slug = $feature->feature_slug;
49
			if ( apply_filters( "wl_feature__enable__${feature_slug}", $feature->default_value ) ) {
50
				call_user_func( $feature->callback );
51
			}
52
		}
53
	}
54
55
}