Passed
Push — main ( 3251c5...37e5f4 )
by
unknown
13:46
created
src/Config.php 1 patch
Indentation   +184 added lines, -184 removed lines patch added patch discarded remove patch
@@ -32,188 +32,188 @@
 block discarded – undo
32 32
 class Config extends AbstractConfig
33 33
 {
34 34
 
35
-    /**
36
-     * The schema of the Config file.
37
-     *
38
-     * @var Schema
39
-     */
40
-    protected $schema;
41
-
42
-    /**
43
-     * The Validator class that gets asked to do the validation of the config.
44
-     *
45
-     * @since 0.1.0
46
-     *
47
-     * @var Validator
48
-     */
49
-    protected $validator;
50
-
51
-    /**
52
-     * Instantiate the Config object.
53
-     *
54
-     * It accepts either an array with the configuration settings, or a
55
-     * filename pointing to a PHP file it can include.
56
-     *
57
-     * @since 0.1.0
58
-     * @since 0.1.6 Accepts a delimiter to parse configuration keys.
59
-     *
60
-     * @param array|string         $config    Array with settings or filename for the
61
-     *                                        settings file.
62
-     * @param Schema|null          $schema    Optional. Config that contains default
63
-     *                                        values that can get overwritten.
64
-     * @param Validator|null       $validator Optional. Validator class that does the
65
-     *                                        actual validation.
66
-     * @param string[]|string|null $delimiter A string or array of strings that are used as delimiters to parse
67
-     *                                        configuration keys. Defaults to "\", "/" & ".".
68
-     *
69
-     * @throws InvalidConfigurationSourceException If the config source is not a string or array.
70
-     * @throws FailedToInstantiateParentException  If the parent class could not be instantiated.
71
-     * @throws FailedToLoadConfigException         If loading of the config source failed.
72
-     * @throws FailedToResolveConfigException      If the config file could not be resolved.
73
-     * @throws InvalidConfigException              If the config file is not valid.
74
-     */
75
-    public function __construct(
76
-        $config,
77
-        ?Schema $schema = null,
78
-        ?Validator $validator = null,
79
-        $delimiter = null
80
-    ) {
81
-        $this->schema    = $schema;
82
-        $this->validator = $validator;
83
-
84
-        // Make sure $config is either a string or array.
85
-        if (! (is_string($config) || is_array($config))) {
86
-            throw new InvalidConfigurationSourceException(
87
-                sprintf(
88
-                    _('Invalid configuration source: %1$s'),
89
-                    print_r($config, true)
90
-                )
91
-            );
92
-        }
93
-
94
-        if (is_string($config)) {
95
-            $config = Loader::load($config);
96
-        }
97
-
98
-        // Run the $config through the OptionsResolver.
99
-        $config = $this->resolveOptions($config);
100
-
101
-        // Instantiate the parent class.
102
-        try {
103
-            parent::__construct($config, $delimiter);
104
-        } catch (Exception $exception) {
105
-            throw new FailedToInstantiateParentException(
106
-                sprintf(
107
-                    _('Could not instantiate the configuration through its parent. Reason: %1$s'),
108
-                    $exception->getMessage()
109
-                )
110
-            );
111
-        }
112
-
113
-        // Finally, validate the resulting config.
114
-        if (! $this->isValid()) {
115
-            throw new InvalidConfigException(
116
-                sprintf(
117
-                    _('ConfigInterface file is not valid: %1$s'),
118
-                    print_r($config, true)
119
-                )
120
-            );
121
-        }
122
-    }
123
-
124
-    /**
125
-     * Validate the Config file.
126
-     *
127
-     * @since  0.1.0
128
-     *
129
-     * @return boolean
130
-     */
131
-    public function isValid()
132
-    {
133
-        if ($this->validator) {
134
-            return $this->validator->isValid($this);
135
-        }
136
-
137
-        return true;
138
-    }
139
-
140
-    /**
141
-     * Process the passed-in defaults and merge them with the new values, while
142
-     * checking that all required options are set.
143
-     *
144
-     * @since 0.1.0
145
-     *
146
-     * @param array $config Configuration settings to resolve.
147
-     *
148
-     * @return array Resolved configuration settings.
149
-     * @throws FailedToResolveConfigException If there are errors while resolving the options.
150
-     */
151
-    protected function resolveOptions($config)
152
-    {
153
-        if (! $this->schema) {
154
-            return $config;
155
-        }
156
-
157
-        try {
158
-            $resolver = new OptionsResolver();
159
-            if ($this->configureOptions($resolver)) {
160
-                $config = $resolver->resolve($config);
161
-            }
162
-        } catch (Exception $exception) {
163
-            throw new FailedToResolveConfigException(
164
-                sprintf(
165
-                    _('Error while resolving config options: %1$s'),
166
-                    $exception->getMessage()
167
-                )
168
-            );
169
-        }
170
-
171
-        return $config;
172
-    }
173
-
174
-    /**
175
-     * Configure the possible and required options for the Config.
176
-     *
177
-     * This should return a bool to let the resolve_options() know whether the
178
-     * actual resolving needs to be done or not.
179
-     *
180
-     * @since 0.1.0
181
-     *
182
-     * @param OptionsResolver $resolver Reference to the OptionsResolver
183
-     *                                  instance.
184
-     *
185
-     * @return bool Whether to do the resolving.
186
-     * @throws FailedToResolveConfigException If there are errors while processing.
187
-     */
188
-    protected function configureOptions(OptionsResolver $resolver)
189
-    {
190
-        $defined  = $this->schema->getDefinedOptions();
191
-        $defaults = $this->schema->getDefaultOptions();
192
-        $required = $this->schema->getRequiredOptions();
193
-
194
-        if (! $defined && ! $defaults && ! $required) {
195
-            return false;
196
-        }
197
-
198
-        try {
199
-            if ($defined) {
200
-                $resolver->setDefined($defined);
201
-            }
202
-            if ($defaults) {
203
-                $resolver->setDefaults($defaults);
204
-            }
205
-            if ($required) {
206
-                $resolver->setRequired($required);
207
-            }
208
-        } catch (Exception $exception) {
209
-            throw new FailedToResolveConfigException(
210
-                sprintf(
211
-                    _('Error while processing config options: %1$s'),
212
-                    $exception->getMessage()
213
-                )
214
-            );
215
-        }
216
-
217
-        return true;
218
-    }
35
+	/**
36
+	 * The schema of the Config file.
37
+	 *
38
+	 * @var Schema
39
+	 */
40
+	protected $schema;
41
+
42
+	/**
43
+	 * The Validator class that gets asked to do the validation of the config.
44
+	 *
45
+	 * @since 0.1.0
46
+	 *
47
+	 * @var Validator
48
+	 */
49
+	protected $validator;
50
+
51
+	/**
52
+	 * Instantiate the Config object.
53
+	 *
54
+	 * It accepts either an array with the configuration settings, or a
55
+	 * filename pointing to a PHP file it can include.
56
+	 *
57
+	 * @since 0.1.0
58
+	 * @since 0.1.6 Accepts a delimiter to parse configuration keys.
59
+	 *
60
+	 * @param array|string         $config    Array with settings or filename for the
61
+	 *                                        settings file.
62
+	 * @param Schema|null          $schema    Optional. Config that contains default
63
+	 *                                        values that can get overwritten.
64
+	 * @param Validator|null       $validator Optional. Validator class that does the
65
+	 *                                        actual validation.
66
+	 * @param string[]|string|null $delimiter A string or array of strings that are used as delimiters to parse
67
+	 *                                        configuration keys. Defaults to "\", "/" & ".".
68
+	 *
69
+	 * @throws InvalidConfigurationSourceException If the config source is not a string or array.
70
+	 * @throws FailedToInstantiateParentException  If the parent class could not be instantiated.
71
+	 * @throws FailedToLoadConfigException         If loading of the config source failed.
72
+	 * @throws FailedToResolveConfigException      If the config file could not be resolved.
73
+	 * @throws InvalidConfigException              If the config file is not valid.
74
+	 */
75
+	public function __construct(
76
+		$config,
77
+		?Schema $schema = null,
78
+		?Validator $validator = null,
79
+		$delimiter = null
80
+	) {
81
+		$this->schema    = $schema;
82
+		$this->validator = $validator;
83
+
84
+		// Make sure $config is either a string or array.
85
+		if (! (is_string($config) || is_array($config))) {
86
+			throw new InvalidConfigurationSourceException(
87
+				sprintf(
88
+					_('Invalid configuration source: %1$s'),
89
+					print_r($config, true)
90
+				)
91
+			);
92
+		}
93
+
94
+		if (is_string($config)) {
95
+			$config = Loader::load($config);
96
+		}
97
+
98
+		// Run the $config through the OptionsResolver.
99
+		$config = $this->resolveOptions($config);
100
+
101
+		// Instantiate the parent class.
102
+		try {
103
+			parent::__construct($config, $delimiter);
104
+		} catch (Exception $exception) {
105
+			throw new FailedToInstantiateParentException(
106
+				sprintf(
107
+					_('Could not instantiate the configuration through its parent. Reason: %1$s'),
108
+					$exception->getMessage()
109
+				)
110
+			);
111
+		}
112
+
113
+		// Finally, validate the resulting config.
114
+		if (! $this->isValid()) {
115
+			throw new InvalidConfigException(
116
+				sprintf(
117
+					_('ConfigInterface file is not valid: %1$s'),
118
+					print_r($config, true)
119
+				)
120
+			);
121
+		}
122
+	}
123
+
124
+	/**
125
+	 * Validate the Config file.
126
+	 *
127
+	 * @since  0.1.0
128
+	 *
129
+	 * @return boolean
130
+	 */
131
+	public function isValid()
132
+	{
133
+		if ($this->validator) {
134
+			return $this->validator->isValid($this);
135
+		}
136
+
137
+		return true;
138
+	}
139
+
140
+	/**
141
+	 * Process the passed-in defaults and merge them with the new values, while
142
+	 * checking that all required options are set.
143
+	 *
144
+	 * @since 0.1.0
145
+	 *
146
+	 * @param array $config Configuration settings to resolve.
147
+	 *
148
+	 * @return array Resolved configuration settings.
149
+	 * @throws FailedToResolveConfigException If there are errors while resolving the options.
150
+	 */
151
+	protected function resolveOptions($config)
152
+	{
153
+		if (! $this->schema) {
154
+			return $config;
155
+		}
156
+
157
+		try {
158
+			$resolver = new OptionsResolver();
159
+			if ($this->configureOptions($resolver)) {
160
+				$config = $resolver->resolve($config);
161
+			}
162
+		} catch (Exception $exception) {
163
+			throw new FailedToResolveConfigException(
164
+				sprintf(
165
+					_('Error while resolving config options: %1$s'),
166
+					$exception->getMessage()
167
+				)
168
+			);
169
+		}
170
+
171
+		return $config;
172
+	}
173
+
174
+	/**
175
+	 * Configure the possible and required options for the Config.
176
+	 *
177
+	 * This should return a bool to let the resolve_options() know whether the
178
+	 * actual resolving needs to be done or not.
179
+	 *
180
+	 * @since 0.1.0
181
+	 *
182
+	 * @param OptionsResolver $resolver Reference to the OptionsResolver
183
+	 *                                  instance.
184
+	 *
185
+	 * @return bool Whether to do the resolving.
186
+	 * @throws FailedToResolveConfigException If there are errors while processing.
187
+	 */
188
+	protected function configureOptions(OptionsResolver $resolver)
189
+	{
190
+		$defined  = $this->schema->getDefinedOptions();
191
+		$defaults = $this->schema->getDefaultOptions();
192
+		$required = $this->schema->getRequiredOptions();
193
+
194
+		if (! $defined && ! $defaults && ! $required) {
195
+			return false;
196
+		}
197
+
198
+		try {
199
+			if ($defined) {
200
+				$resolver->setDefined($defined);
201
+			}
202
+			if ($defaults) {
203
+				$resolver->setDefaults($defaults);
204
+			}
205
+			if ($required) {
206
+				$resolver->setRequired($required);
207
+			}
208
+		} catch (Exception $exception) {
209
+			throw new FailedToResolveConfigException(
210
+				sprintf(
211
+					_('Error while processing config options: %1$s'),
212
+					$exception->getMessage()
213
+				)
214
+			);
215
+		}
216
+
217
+		return true;
218
+	}
219 219
 }
Please login to merge, or discard this patch.
src/ConfigInterface.php 1 patch
Indentation   +88 added lines, -88 removed lines patch added patch discarded remove patch
@@ -27,100 +27,100 @@
 block discarded – undo
27 27
 interface ConfigInterface extends IteratorAggregate, ArrayAccess, Serializable, Countable
28 28
 {
29 29
 
30
-    /**
31
-     * Creates a copy of the ArrayObject.
32
-     *
33
-     * Returns a copy of the array. When the ArrayObject refers to an object an
34
-     * array of the public properties of that object will be returned.
35
-     * This is implemented by \ArrayObject.
36
-     *
37
-     * @since 0.1.0
38
-     *
39
-     * @return array Copy of the array.
40
-     */
41
-    public function getArrayCopy();
30
+	/**
31
+	 * Creates a copy of the ArrayObject.
32
+	 *
33
+	 * Returns a copy of the array. When the ArrayObject refers to an object an
34
+	 * array of the public properties of that object will be returned.
35
+	 * This is implemented by \ArrayObject.
36
+	 *
37
+	 * @since 0.1.0
38
+	 *
39
+	 * @return array Copy of the array.
40
+	 */
41
+	public function getArrayCopy();
42 42
 
43
-    /**
44
-     * Check whether the Config has a specific key.
45
-     *
46
-     * To check a value several levels deep, add the keys for each level as a comma-separated list.
47
-     *
48
-     * @since 0.1.0
49
-     * @since 0.1.4 Accepts list of keys.
50
-     *
51
-     * @param string $_ List of keys.
52
-     *
53
-     * @return bool
54
-     */
55
-    public function hasKey($_);
43
+	/**
44
+	 * Check whether the Config has a specific key.
45
+	 *
46
+	 * To check a value several levels deep, add the keys for each level as a comma-separated list.
47
+	 *
48
+	 * @since 0.1.0
49
+	 * @since 0.1.4 Accepts list of keys.
50
+	 *
51
+	 * @param string $_ List of keys.
52
+	 *
53
+	 * @return bool
54
+	 */
55
+	public function hasKey($_);
56 56
 
57
-    /**
58
-     * Get the value of a specific key.
59
-     *
60
-     * To get a value several levels deep, add the keys for each level as a comma-separated list.
61
-     *
62
-     * @since 0.1.0
63
-     * @since 0.1.4 Accepts list of keys.
64
-     *
65
-     * @param string $_ List of keys.
66
-     *
67
-     * @return mixed
68
-     */
69
-    public function getKey($_);
57
+	/**
58
+	 * Get the value of a specific key.
59
+	 *
60
+	 * To get a value several levels deep, add the keys for each level as a comma-separated list.
61
+	 *
62
+	 * @since 0.1.0
63
+	 * @since 0.1.4 Accepts list of keys.
64
+	 *
65
+	 * @param string $_ List of keys.
66
+	 *
67
+	 * @return mixed
68
+	 */
69
+	public function getKey($_);
70 70
 
71
-    /**
72
-     * Get a (multi-dimensional) array of all the configuration settings.
73
-     *
74
-     * @since 0.1.4
75
-     *
76
-     * @return array
77
-     */
78
-    public function getAll();
71
+	/**
72
+	 * Get a (multi-dimensional) array of all the configuration settings.
73
+	 *
74
+	 * @since 0.1.4
75
+	 *
76
+	 * @return array
77
+	 */
78
+	public function getAll();
79 79
 
80
-    /**
81
-     * Get the an array with all the keys
82
-     *
83
-     * @since 0.1.0
84
-     *
85
-     * @return mixed
86
-     */
87
-    public function getKeys();
80
+	/**
81
+	 * Get the an array with all the keys
82
+	 *
83
+	 * @since 0.1.0
84
+	 *
85
+	 * @return mixed
86
+	 */
87
+	public function getKeys();
88 88
 
89
-    /**
90
-     * Is the Config valid?
91
-     *
92
-     * @since 0.1.0
93
-     *
94
-     * @return boolean
95
-     */
96
-    public function isValid();
89
+	/**
90
+	 * Is the Config valid?
91
+	 *
92
+	 * @since 0.1.0
93
+	 *
94
+	 * @return boolean
95
+	 */
96
+	public function isValid();
97 97
 
98
-    /**
99
-     * Get a new config at a specific sub-level.
100
-     *
101
-     * @since 0.1.13
102
-     *
103
-     * @param string $_ List of keys.
104
-     *
105
-     * @return ConfigInterface
106
-     */
107
-    public function getSubConfig($_);
98
+	/**
99
+	 * Get a new config at a specific sub-level.
100
+	 *
101
+	 * @since 0.1.13
102
+	 *
103
+	 * @param string $_ List of keys.
104
+	 *
105
+	 * @return ConfigInterface
106
+	 */
107
+	public function getSubConfig($_);
108 108
 
109
-    /**
110
-     * Serialize the config.
111
-     *
112
-     * @since 0.1.13
113
-     *
114
-     * @return array
115
-     */
116
-    public function __serialize(): array;
109
+	/**
110
+	 * Serialize the config.
111
+	 *
112
+	 * @since 0.1.13
113
+	 *
114
+	 * @return array
115
+	 */
116
+	public function __serialize(): array;
117 117
 
118
-    /**
119
-     * Unserialize the config.
120
-     *
121
-     * @since 0.1.13
122
-     *
123
-     * @param array $data The data to unserialize.
124
-     */
125
-    public function __unserialize(array $data): void;
118
+	/**
119
+	 * Unserialize the config.
120
+	 *
121
+	 * @since 0.1.13
122
+	 *
123
+	 * @param array $data The data to unserialize.
124
+	 */
125
+	public function __unserialize(array $data): void;
126 126
 }
Please login to merge, or discard this patch.