Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
n/a
0 / 0
n/a
0 / 0
CRAP
n/a
0 / 0
1<?php
2
3namespace MediaWiki\Settings\Config;
4
5use MediaWiki\Config\Config;
6use MediaWiki\Settings\SettingsBuilderException;
7
8/**
9 * Builder for Config objects.
10 *
11 * @unstable
12 */
13interface ConfigBuilder {
14
15    /**
16     * Set the configuration $key to $value.
17     *
18     * @param string $key
19     * @param mixed $value
20     * @param MergeStrategy|null $mergeStrategy strategy for merging array config values.
21     * @return ConfigBuilder
22     */
23    public function set( string $key, $value, MergeStrategy $mergeStrategy = null ): ConfigBuilder;
24
25    /**
26     * Set all values in the array.
27     *
28     * @param array $values
29     * @param MergeStrategy[] $mergeStrategies The merge strategies indexed by config key
30     * @return ConfigBuilder
31     */
32    public function setMulti( array $values, array $mergeStrategies = [] ): ConfigBuilder;
33
34    /**
35     * Set the default for the configuration $key to $defaultValue.
36     *
37     * If the $key is already set, non-array $defaultValue will be ignored,
38     * for array $defaultValue the existing value will be merged into it as
39     * if the default was already there when the existing value was set.
40     *
41     * @param string $key
42     * @param mixed $defaultValue
43     * @param MergeStrategy|null $mergeStrategy strategy for merging array config values.
44     * @return ConfigBuilder
45     */
46    public function setDefault( string $key, $defaultValue, MergeStrategy $mergeStrategy = null ): ConfigBuilder;
47
48    /**
49     * Set defaults in a batch.
50     *
51     * @param array $defaults The default values
52     * @param MergeStrategy[] $mergeStrategies The merge strategies indexed by config key
53     * @return ConfigBuilder
54     * @throws SettingsBuilderException if a merge strategy is not provided and
55     *   the value is not an array.
56     */
57    public function setMultiDefault( array $defaults, array $mergeStrategies ): ConfigBuilder;
58
59    /**
60     * Get the current value for $key.
61     *
62     * @param string $key
63     * @return mixed
64     */
65    public function get( string $key );
66
67    /**
68     * Build the resulting Config object.
69     *
70     * @return Config
71     */
72    public function build(): Config;
73}