Config: remove bad assumptions about string root keys

these could just as easily be integers and the code should still work.
This commit is contained in:
Dylan K. Taylor
2025-01-06 22:50:25 +00:00
parent 20849d6268
commit 9a130bce32

View File

@ -72,7 +72,7 @@ class Config{
/** /**
* @var mixed[] * @var mixed[]
* @phpstan-var array<string, mixed> * @phpstan-var array<mixed, mixed>
*/ */
private array $config = []; private array $config = [];
@ -450,7 +450,7 @@ class Config{
/** /**
* @return mixed[] * @return mixed[]
* @phpstan-return list<string>|array<string, mixed> * @phpstan-return list<mixed>|array<mixed, mixed>
*/ */
public function getAll(bool $keys = false) : array{ public function getAll(bool $keys = false) : array{
return ($keys ? array_keys($this->config) : $this->config); return ($keys ? array_keys($this->config) : $this->config);
@ -458,7 +458,6 @@ class Config{
/** /**
* @param mixed[] $defaults * @param mixed[] $defaults
* @phpstan-param array<string, mixed> $defaults
*/ */
public function setDefaults(array $defaults) : void{ public function setDefaults(array $defaults) : void{
$this->fillDefaults($defaults, $this->config); $this->fillDefaults($defaults, $this->config);
@ -467,13 +466,11 @@ class Config{
/** /**
* @param mixed[] $default * @param mixed[] $default
* @param mixed[] $data reference parameter * @param mixed[] $data reference parameter
* @phpstan-param array<string, mixed> $default * @phpstan-param-out array<mixed, mixed> $data
* @phpstan-param array<string, mixed> $data
* @phpstan-param-out array<string, mixed> $data
*/ */
private function fillDefaults(array $default, array &$data) : int{ private function fillDefaults(array $default, array &$data) : int{
$changed = 0; $changed = 0;
foreach(Utils::stringifyKeys($default) as $k => $v){ foreach(Utils::promoteKeys($default) as $k => $v){
if(is_array($v)){ if(is_array($v)){
if(!isset($data[$k]) || !is_array($data[$k])){ if(!isset($data[$k]) || !is_array($data[$k])){
$data[$k] = []; $data[$k] = [];
@ -560,7 +557,7 @@ class Config{
}; };
break; break;
} }
$result[(string) $k] = $v; $result[$k] = $v;
} }
} }