Add delete() method for Core\Config
This commit is contained in:
parent
d8f94dc853
commit
97b544f851
1 changed files with 44 additions and 8 deletions
|
@ -292,7 +292,7 @@ class Config
|
|||
}
|
||||
|
||||
/**
|
||||
* Добавляет/заменяет данные в конфиг(е)
|
||||
* Добавляет/заменяет элемент в конфиг(е)
|
||||
*/
|
||||
public function add(string $path, $value, string $after = null): bool
|
||||
{
|
||||
|
@ -316,13 +316,7 @@ class Config
|
|||
$config[$key] = [];
|
||||
}
|
||||
|
||||
if (
|
||||
\array_key_exists('value', $config[$key])
|
||||
&& \array_key_exists('value_before', $config[$key])
|
||||
&& \array_key_exists('value_after', $config[$key])
|
||||
&& \array_key_exists('key_before', $config[$key])
|
||||
&& \array_key_exists('key_after', $config[$key])
|
||||
) {
|
||||
if ($this->isFormat($config[$key])) {
|
||||
$config = &$config[$key]['value'];
|
||||
} else {
|
||||
$config = &$config[$key];
|
||||
|
@ -371,6 +365,48 @@ class Config
|
|||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Удаляет элемент из конфига
|
||||
*/
|
||||
public function delete(string $path)
|
||||
{
|
||||
if (empty($this->configArray)) {
|
||||
$this->configArray = $this->getArray();
|
||||
}
|
||||
|
||||
$pathArray = \explode('=>', $path);
|
||||
$size = \count($pathArray);
|
||||
$i = 0;
|
||||
$config = &$this->configArray;
|
||||
|
||||
while ($i < $size - 1) {
|
||||
$key = $pathArray[$i];
|
||||
|
||||
if (! \array_key_exists($key, $config)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($this->isFormat($config[$key])) {
|
||||
$config = &$config[$key]['value'];
|
||||
} else {
|
||||
$config = &$config[$key];
|
||||
}
|
||||
|
||||
++$i;
|
||||
}
|
||||
|
||||
$key = $pathArray[$i];
|
||||
|
||||
if (! \array_key_exists($key, $config)) {
|
||||
return false;
|
||||
} else {
|
||||
$result = $config[$key];
|
||||
unset($config[$key]);
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Записывает файл конфига с перестройкой массива
|
||||
*/
|
||||
|
|
Loading…
Reference in a new issue