diff options
Diffstat (limited to 'includes/Settings/Source/SettingsIncludeLocator.php')
-rw-r--r-- | includes/Settings/Source/SettingsIncludeLocator.php | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/includes/Settings/Source/SettingsIncludeLocator.php b/includes/Settings/Source/SettingsIncludeLocator.php new file mode 100644 index 000000000000..1e34fad2c3db --- /dev/null +++ b/includes/Settings/Source/SettingsIncludeLocator.php @@ -0,0 +1,37 @@ +<?php + +namespace MediaWiki\Settings\Source; + +use MediaWiki\Settings\SettingsBuilderException; + +/** + * Implementations of SettingsSource may additionally implement SettingsIncludeLocator + * as well, to provide support for relative include locations. For instance, a + * SettingsSource that loads a file may provide support for includes to be + * specified relative to the location of that file. + * + * @since 1.38 + * @todo mark as stable before the 1.38 release + */ +interface SettingsIncludeLocator { + + /** + * This method defines how a relative reference to the location of + * another settings source is interpreted. + * + * It tries to make $location absolute by interpreting it as + * relative to the location of the SettingsSource it originates from. + * + * Implementation are "best effort". If a location cannot be made + * absolute, it may be returned as-is. Implementations are also free + * to throw a SettingsBuilderException to indicate that the given + * include location is not supported in this context. + * + * @param string $location + * + * @return string + * @throws SettingsBuilderException if the given location cannot be used + * as an include by the current source. + */ + public function locateInclude( string $location ): string; +} |