aboutsummaryrefslogtreecommitdiffstats
path: root/includes/Settings/Source/ArraySource.php
diff options
context:
space:
mode:
authorDan Duvall <dduvall@wikimedia.org>2021-11-11 10:46:32 -0800
committerDan Duvall <dduvall@wikimedia.org>2021-11-15 14:07:59 -0800
commit9a4af2566438e1b2350a02e37046ee2b67a54d88 (patch)
tree55b7098a1c52cff72f29001df3021e450dddc808 /includes/Settings/Source/ArraySource.php
parent18fddad2ea4dd134738078e88dde8907b12af052 (diff)
downloadmediawikicore-9a4af2566438e1b2350a02e37046ee2b67a54d88.tar.gz
mediawikicore-9a4af2566438e1b2350a02e37046ee2b67a54d88.zip
Introduced settings sources and formats
A `SettingsSource` is meant to represent any kind of local or remote store from which settings can be read, be this a local file, remote URL, database, etc. It is concerned with reading in (and possibly decoding) settings data, and computing a consistent hash key that may be used in caching. A `SettingsFormat` is meant to detect supported file types and/or decode source contents into settings arrays. As of now, JSON is the only supported format but others may be implemented. `FileSource` is the first source implementation, with its default format being JSON, meant to read settings from local JSON files. `ArraySource` is mostly useful for testing using array literals. Refactored `SettingsBuilder` methods to use the new source abstractions. Bug: T295499 Change-Id: If7869609c4ad1ccd0894d5ba358f885007168972
Diffstat (limited to 'includes/Settings/Source/ArraySource.php')
-rw-r--r--includes/Settings/Source/ArraySource.php25
1 files changed, 25 insertions, 0 deletions
diff --git a/includes/Settings/Source/ArraySource.php b/includes/Settings/Source/ArraySource.php
new file mode 100644
index 000000000000..a7a1cdfbf66f
--- /dev/null
+++ b/includes/Settings/Source/ArraySource.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace MediaWiki\Settings\Source;
+
+/**
+ * Settings loaded from an array.
+ *
+ * @since 1.38
+ */
+class ArraySource implements SettingsSource {
+
+ private $settings;
+
+ public function __construct( array $settings ) {
+ $this->settings = $settings;
+ }
+
+ public function load(): array {
+ return $this->settings;
+ }
+
+ public function __toString(): string {
+ return '<array>';
+ }
+}