Selaa lähdekoodia

Add delete() method for Core\Config

Visman 4 vuotta sitten
vanhempi
commit
97b544f851
1 muutettua tiedostoa jossa 44 lisäystä ja 8 poistoa
  1. 44 8
      app/Core/Config.php

+ 44 - 8
app/Core/Config.php

@@ -292,7 +292,7 @@ class Config
     }
     }
 
 
     /**
     /**
-     * Добавляет/заменяет данные в конфиг(е)
+     * Добавляет/заменяет элемент в конфиг(е)
      */
      */
     public function add(string $path, $value, string $after = null): bool
     public function add(string $path, $value, string $after = null): bool
     {
     {
@@ -316,13 +316,7 @@ class Config
                     $config[$key] = [];
                     $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'];
                     $config = &$config[$key]['value'];
                 } else {
                 } else {
                     $config = &$config[$key];
                     $config = &$config[$key];
@@ -371,6 +365,48 @@ class Config
         return true;
         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;
+        }
+    }
+
     /**
     /**
      * Записывает файл конфига с перестройкой массива
      * Записывает файл конфига с перестройкой массива
      */
      */