EntityStoreOptions   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 55
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 1
Metric Value
wmc 7
c 1
b 0
f 1
lcom 1
cbo 0
dl 0
loc 55
ccs 17
cts 17
cp 1
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A setOption() 0 3 1
A hasOption() 0 3 1
A getOption() 0 7 2
A defaultOption() 0 5 2
1
<?php
2
3
namespace Wikibase\EntityStore;
4
5
use InvalidArgumentException;
6
7
/**
8
 * @licence GPLv2+
9
 * @author Thomas Pellissier Tanon
10
 */
11
class EntityStoreOptions {
12
13
	/**
14
	 * @var array
15
	 */
16
	private $options;
17
18
	/**
19
	 * @param array $options
20
	 */
21 8
	public function __construct( array $options = [] ) {
22 8
		$this->options = $options;
23 8
	}
24
25
	/**
26
	 * @param string $option
27
	 * @param mixed $value
28
	 */
29 4
	public function setOption( $option, $value ) {
30 4
		$this->options[$option] = $value;
31 4
	}
32
33
	/**
34
	 * @param string $option
35
	 * @return mixed
36
	 * @throws InvalidArgumentException
37
	 */
38 7
	public function getOption( $option ) {
39 7
		if ( !array_key_exists( $option, $this->options ) ) {
40 1
			throw new InvalidArgumentException( 'Unknown option ' . $option );
41
		}
42
43 6
		return $this->options[$option];
44
	}
45
46
	/**
47
	 * @param string $option
48
	 * @return boolean
49
	 */
50 5
	public function hasOption( $option ) {
51 5
		return array_key_exists( $option, $this->options );
52
	}
53
54
	/**
55
	 * Sets the default value of an option
56
	 *
57
	 * @param string $option
58
	 * @param mixed $default
59
	 */
60 4
	public function defaultOption( $option, $default ) {
61 4
		if ( !$this->hasOption( $option ) ) {
62 3
			$this->setOption( $option, $default );
63 3
		}
64 4
	}
65
}
66