Interface draft:
SettingsSource { public function load(): array; public function getHashKey(): string; }
Example implementations:
new SettingsFileSource( 'something.json', new JsonReader() ); new SettingsArraySource( [ ... ] );
Example usage:
SettingsBuilder::load( SettingsSource $source );
NOTE: this is part of prototyping a solution for T292402