Completed
Push — fix/sso-staging-site ( c2e7d1...89d514 )
by
unknown
45:35 queued 35:19
created

Jetpack_Constants::clear_constants()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 3
rs 10
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 isset( self::$set_constants[ $name ] )
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 ( isset( self::$set_constants[ $name ] ) ) {
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 ( ! isset( self::$set_constants[ $name ] ) ) {
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