EntityStoreOptions::hasOption()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 3
ccs 2
cts 2
cp 1
rs 10
cc 1
eloc 2
nc 1
nop 1
crap 1
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