Completed
Push — add/changelog-50 ( ee3f96...d98dd1 )
by Jeremy
124:34 queued 114:27
created

Jetpack_Constants::clear_single_constant()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 5
nc 2
nop 1
dl 0
loc 8
rs 9.4285
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * Class Jetpack_Constants
5
 *
6
 * Testing constants is hard. Once you define a constant, it's defined. Jetpack_Constants is an
7
 * abstraction layer so that unit tests can set "constants" for tests.
8
 *
9
 * To test your code, you'll need to swap out `defined( 'CONSTANT' )` with `Jetpack_Constants::is_defined( 'CONSTANT' )`
10
 * and replace `CONSTANT` with `Jetpack_Constants::get_constant( 'CONSTANT' )`. Then in the unit test, you can set the
11
 * constant with `Jetpack::set_constant( 'CONSTANT', $value )` and then clean up after each test with something like
12
 * this:
13
 *
14
 * function tearDown() {
15
 *     Jetpack_Constants::clear_constants();
16
 * }
17
 */
18
class Jetpack_Constants {
19
	static $set_constants = array();
0 ignored issues
show
Coding Style introduced by
The visibility should be declared for property $set_constants.

The PSR-2 coding standard requires that all properties in a class have their visibility explicitly declared. If you declare a property using

class A {
    var $property;
}

the property is implicitly global.

To learn more about the PSR-2, please see the PHP-FIG site on the PSR-2.

Loading history...
20
21
	/**
22
	 * Checks if a "constant" has been set in Jetpack_Constants, and if not,
23
	 * checks if the constant was defined with define( 'name', 'value ).
24
	 *
25
	 * @param $name string The name of the constant
26
	 *
27
	 * @return bool
28
	 */
29
	public static function is_defined( $name ) {
30
		return array_key_exists( $name, self::$set_constants )
31
			? true
32
			: defined( $name );
33
	}
34
35
	/**
36
	 * Attempts to retrieve the "constant" from Jetpack_Constants, and if it hasn't been set,
37
	 * then attempts to get the constant with the constant() function.
38
	 *
39
	 * @param $name
40
	 *
41
	 * @return mixed null if the constant does not exist or the value of the constant.
42
	 */
43
	public static function get_constant( $name ) {
44
		if ( array_key_exists( $name,  self::$set_constants ) ) {
45
			return self::$set_constants[ $name ];
46
		}
47
48
		return defined( $name ) ? constant( $name ) : null;
49
	}
50
51
	/**
52
	 * Sets the value of the "constant" within Jetpack_Constants.
53
	 *
54
	 * @param $name  string The name of the "constant"
55
	 * @param $value string The value of the "constant"
56
	 */
57
	public static function set_constant( $name, $value ) {
58
		self::$set_constants[ $name ] = $value;
59
	}
60
61
	/**
62
	 * Will unset a "constant" from Jetpack_Constants if the constant exists.
63
	 *
64
	 * @param $name string The name of the "constant"
65
	 *
66
	 * @return bool Whether the constant was removed.
67
	 */
68
	public static function clear_single_constant( $name ) {
69
		if ( ! array_key_exists( $name, self::$set_constants ) ) {
70
			return false;
71
		}
72
73
		unset( self::$set_constants[ $name ] );
74
		return true;
75
	}
76
77
	/**
78
	 * Resets all of the constants within Jetpack_Constants.
79
	 */
80
	public static function clear_constants() {
81
		self::$set_constants = array();
82
	}
83
}
84