wiki.techinc.nl/includes/Settings/Config/ArrayConfigBuilder.php
daniel 8299c9de3f Introduce IterableConfig
Bug: T301544
Change-Id: I0a93ebb5305f95cf1b12df276f25a44195fedafa
2022-02-14 21:27:23 +01:00

40 lines
1,010 B
PHP

<?php
namespace MediaWiki\Settings\Config;
use Config;
use HashConfig;
use MediaWiki\Config\IterableConfig;
class ArrayConfigBuilder implements ConfigBuilder {
use ConfigBuilderTrait;
/** @var array */
protected $config = [];
public function set( string $key, $value, MergeStrategy $mergeStrategy = null ): ConfigBuilder {
$this->config[ $key ] =
$this->getNewValue( $key, $this->config[ $key ] ?? null, $value, $mergeStrategy );
return $this;
}
public function setDefault( string $key, $value, MergeStrategy $mergeStrategy = null ): ConfigBuilder {
if ( $mergeStrategy ) {
$this->set( $key, $value, $mergeStrategy->reverse() );
} elseif ( !array_key_exists( $key, $this->config ) ) {
$this->config[$key] = $value;
}
return $this;
}
/**
* Build the configuration.
*
* @todo Once we can use PHP 7.4, change the return type declaration to IterableConfig.
* @return IterableConfig
*/
public function build(): Config {
return new HashConfig( $this->config );
}
}