Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
90.91% |
10 / 11 |
|
100.00% |
8 / 8 |
CRAP | |
100.00% |
1 / 1 |
HashConfig | |
100.00% |
10 / 10 |
|
100.00% |
8 / 8 |
9 | |
100.00% |
1 / 1 |
newInstance | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
__construct | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
get | |
100.00% |
3 / 3 |
|
100.00% |
1 / 1 |
2 | |||
has | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
set | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
getIterator | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
getNames | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
clear | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 |
1 | <?php |
2 | /** |
3 | * Copyright 2014 |
4 | * |
5 | * This program is free software; you can redistribute it and/or modify |
6 | * it under the terms of the GNU General Public License as published by |
7 | * the Free Software Foundation; either version 2 of the License, or |
8 | * (at your option) any later version. |
9 | * |
10 | * This program is distributed in the hope that it will be useful, |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | * GNU General Public License for more details. |
14 | * |
15 | * You should have received a copy of the GNU General Public License along |
16 | * with this program; if not, write to the Free Software Foundation, Inc., |
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
18 | * http://www.gnu.org/copyleft/gpl.html |
19 | * |
20 | * @file |
21 | */ |
22 | |
23 | namespace MediaWiki\Config; |
24 | |
25 | use ArrayIterator; |
26 | use Traversable; |
27 | |
28 | /** |
29 | * A Config instance which stores all settings as a member variable |
30 | * |
31 | * @since 1.24 |
32 | */ |
33 | class HashConfig implements Config, MutableConfig, IterableConfig { |
34 | |
35 | /** |
36 | * Array of config settings |
37 | * |
38 | * @var array |
39 | */ |
40 | private $settings; |
41 | |
42 | /** |
43 | * @return HashConfig |
44 | */ |
45 | public static function newInstance() { |
46 | return new HashConfig; |
47 | } |
48 | |
49 | /** |
50 | * @param array $settings Any current settings to pre-load |
51 | */ |
52 | public function __construct( array $settings = [] ) { |
53 | $this->settings = $settings; |
54 | } |
55 | |
56 | /** |
57 | * @inheritDoc |
58 | */ |
59 | public function get( $name ) { |
60 | if ( !$this->has( $name ) ) { |
61 | throw new ConfigException( __METHOD__ . ": undefined option: '$name'" ); |
62 | } |
63 | |
64 | return $this->settings[$name]; |
65 | } |
66 | |
67 | /** |
68 | * @inheritDoc |
69 | * @since 1.24 |
70 | */ |
71 | public function has( $name ) { |
72 | return array_key_exists( $name, $this->settings ); |
73 | } |
74 | |
75 | /** |
76 | * @see MutableConfig::set |
77 | * @param string $name |
78 | * @param mixed $value |
79 | */ |
80 | public function set( $name, $value ) { |
81 | $this->settings[$name] = $value; |
82 | } |
83 | |
84 | /** |
85 | * @inheritDoc |
86 | * @since 1.38 |
87 | * @return Traversable |
88 | */ |
89 | public function getIterator(): Traversable { |
90 | return new ArrayIterator( $this->settings ); |
91 | } |
92 | |
93 | /** |
94 | * @inheritDoc |
95 | * @since 1.38 |
96 | * @return string[] |
97 | */ |
98 | public function getNames(): array { |
99 | return array_keys( $this->settings ); |
100 | } |
101 | |
102 | /** |
103 | * Clears all config variables. |
104 | * @since 1.39 |
105 | */ |
106 | public function clear() { |
107 | $this->settings = []; |
108 | } |
109 | } |
110 | |
111 | /** @deprecated class alias since 1.41 */ |
112 | class_alias( HashConfig::class, 'HashConfig' ); |