20250629 1.1 Stable
This commit is contained in:
		| @@ -4,6 +4,9 @@ namespace goodboyalex\php_components_pack\classes; | ||||
|  | ||||
| use goodboyalex\php_components_pack\enums\JsonErrorCode; | ||||
| use goodboyalex\php_components_pack\exceptions\JsonException; | ||||
| use goodboyalex\php_components_pack\traits\JsonReWriter\JsonReWriterDeleteTrait; | ||||
| use goodboyalex\php_components_pack\traits\JsonReWriter\JsonReWriterKeyTrait; | ||||
| use goodboyalex\php_components_pack\traits\JsonReWriter\JsonReWriterLoadSaveTrait; | ||||
| use goodboyalex\php_components_pack\traits\JsonReWriter\JsonReWriterReadTrait; | ||||
| use goodboyalex\php_components_pack\traits\JsonReWriter\JsonReWriterWriteTrait; | ||||
|  | ||||
| @@ -22,6 +25,11 @@ final class JsonReWriter | ||||
|      */ | ||||
|     public string $JsonString { | ||||
|         get { | ||||
|             // Проверка на пустоту | ||||
|             if (count($this->JsonData) === 0) | ||||
|                 // - если массив пуст, возвращаем пустой JSON | ||||
|                 return '{}'; | ||||
|  | ||||
|             // Преобразую данные в JSON | ||||
|             $json = json_encode($this->JsonData, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); | ||||
|  | ||||
| @@ -65,107 +73,18 @@ final class JsonReWriter | ||||
|         unset($this->JsonData); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Сохраняем JSON в файл. | ||||
|      * | ||||
|      * @param string $fileName Имя файла. | ||||
|      * | ||||
|      * @return bool Сохранены ли данные в файл: <code>true</code> - да, <code>false</code> - нет. | ||||
|      */ | ||||
|     public function SaveToFile (string $fileName): bool | ||||
|     { | ||||
|         // Запись данных в файл | ||||
|         return file_put_contents($fileName, $this->JsonString) !== false; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Загрузка данных из JSON-файла. | ||||
|      * | ||||
|      * @param string $fileName Имя файла. | ||||
|      * | ||||
|      * @return bool Загрузились ли данные из файла: <code>true</code> - да, <code>false</code> - нет. | ||||
|      */ | ||||
|     public function LoadFromFile (string $fileName): bool | ||||
|     { | ||||
|         // Проверка существования файла | ||||
|         if (!is_file($fileName)) | ||||
|             // - если нет, возвращаем false | ||||
|             return false; | ||||
|  | ||||
|         // Чтение содержимого файла | ||||
|         $result = file_get_contents($fileName); | ||||
|  | ||||
|         // Проверка на ошибки | ||||
|         if ($result === false) | ||||
|             // - если есть ошибки, возвращаем false | ||||
|             return false; | ||||
|  | ||||
|         // Записываем результат | ||||
|         $this->JsonString = $result; | ||||
|  | ||||
|         // Возвращаем true, если все хорошо | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Проверяем наличие ключа в JSON. | ||||
|      * | ||||
|      * @param string $key Ключ. | ||||
|      * | ||||
|      * @return bool true если ключ найден, false если нет. | ||||
|      */ | ||||
|     public function IsKeyExists (string $key): bool | ||||
|     { | ||||
|         // Получаем массив ключей по вложенности | ||||
|         $keys = $this->ParseKey($key); | ||||
|  | ||||
|         // Получаем текущий массив данных | ||||
|         $current = $this->JsonData; | ||||
|  | ||||
|         // Для каждого ключа | ||||
|         foreach ($keys as $key) { | ||||
|             // - проверяем наличие ключа в текущем массиве | ||||
|             if (!array_key_exists($key, $current)) | ||||
|                 // - нет? Возвращаем false | ||||
|                 return false; | ||||
|  | ||||
|             // Переходим ко вложенному массиву | ||||
|             $current = $current[$key]; | ||||
|         } | ||||
|  | ||||
|         // Возвращаем true, если все ключи найдены | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Получение ключей по вложенности. Т.е., ключи вида <code>"key1/key2/key3" => ["key1", "key2", "key3"]</code>. | ||||
|      * | ||||
|      * @param string $key Ключ. | ||||
|      * | ||||
|      * @return array Ключи по вложенности. | ||||
|      */ | ||||
|     private function ParseKey (string $key): array | ||||
|     { | ||||
|         return explode('/', $key); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Создание ключа в JSON. | ||||
|      * | ||||
|      * @param string $key Ключ. | ||||
|      * @param mixed $value Значение. | ||||
|      * | ||||
|      * @return void | ||||
|      * @throws JsonException Если ключ не является массивом. | ||||
|      */ | ||||
|     private function CreateKey (string $key, mixed $value): void | ||||
|     { | ||||
|  | ||||
|     } | ||||
|  | ||||
|     // Подключаем методы чтения JSON | ||||
|     use JsonReWriterReadTrait; | ||||
|  | ||||
|     // Подключаем методы записи JSON | ||||
|     use JsonReWriterWriteTrait; | ||||
|  | ||||
|     // Подключаем методы сохранения и загрузки JSON | ||||
|     use JsonReWriterLoadSaveTrait; | ||||
|  | ||||
|     // Подключаем методы работы с ключами | ||||
|     use JsonReWriterKeyTrait; | ||||
|  | ||||
|     // Подключаем методы удаления данных из JSON | ||||
|     use JsonReWriterDeleteTrait; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user