diff options
author | Dan Duvall <dduvall@wikimedia.org> | 2021-11-11 10:46:32 -0800 |
---|---|---|
committer | Dan Duvall <dduvall@wikimedia.org> | 2021-11-15 14:07:59 -0800 |
commit | 9a4af2566438e1b2350a02e37046ee2b67a54d88 (patch) | |
tree | 55b7098a1c52cff72f29001df3021e450dddc808 /includes/Settings/Source/ArraySource.php | |
parent | 18fddad2ea4dd134738078e88dde8907b12af052 (diff) | |
download | mediawikicore-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.php | 25 |
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>'; + } +} |