20250505
[*: ActionStateMessageModel] улучшена реализация интерфейса ISerializable. [*: ActionState] класс разбит на множество трейтов для более структурированности. [*: ActionState] улучшена реализация интерфейса ISerializable. [*: ActionState] класс внутреннего хранилища сообщений изменён на ObjectArray. [*: ActionState] улучшена реализация метода Count. [*: ActionState] улучшены реализации методов HasInfos, HasWarnings, HasErrors, IsSuccess, GetStringMessages и Clear. [*: ActionState] возвращаемое значение метода GetMessages заменено на ObjectArray.
This commit is contained in:
		| @@ -2,11 +2,8 @@ | ||||
|  | ||||
| namespace goodboyalex\php_components_pack\models; | ||||
|  | ||||
| use Exception; | ||||
| use goodboyalex\php_components_pack\classes\ClassMapper; | ||||
| use goodboyalex\php_components_pack\enums\MessageType; | ||||
| use goodboyalex\php_components_pack\interfaces\ISerializable; | ||||
| use UnitEnum; | ||||
|  | ||||
| /** | ||||
|  * Класс сообщения состояния. | ||||
| @@ -53,18 +50,13 @@ final class ActionStateMessageModel implements ISerializable | ||||
|     public function UnSerialize (string $serialized): void | ||||
|     { | ||||
|         // Десериализую массив | ||||
|         $thisNew = unserialize($serialized); | ||||
|         $array = json_decode($serialized, true); | ||||
|  | ||||
|         try { | ||||
|             // Получаю класс | ||||
|             $class = ClassMapper::MapToClassProperty(get_class($this), $thisNew); | ||||
|         } | ||||
|         catch (Exception) { | ||||
|             $class = new ActionStateMessageModel(); | ||||
|         } | ||||
|  | ||||
|         // Заполняю текущий класс | ||||
|         ClassMapper::MapClass($class, $this); | ||||
|         // Заполняю поля | ||||
|         $this->MessageType = | ||||
|             isset($array["MessageType"]) ? MessageType::FromName($array["MessageType"]) : MessageType::Info; | ||||
|         $this->IsCritical = isset($array["IsCritical"]) && $array["IsCritical"] == 1; | ||||
|         $this->Message = $array["Message"] ?? ""; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -75,34 +67,12 @@ final class ActionStateMessageModel implements ISerializable | ||||
|         // Создаю массив результата | ||||
|         $result = []; | ||||
|  | ||||
|         // Получаю свойства класса | ||||
|         $properties = get_object_vars($this); | ||||
|         // Заполняю массив | ||||
|         $result["MessageType"] = $this->MessageType->GetValue(); | ||||
|         $result["IsCritical"] = $this->IsCritical ? 1 : 0; | ||||
|         $result["Message"] = $this->Message; | ||||
|  | ||||
|         // Для каждого свойства класса | ||||
|         foreach ($properties as $key => $value) { | ||||
|  | ||||
|             // - если значение является перечислением | ||||
|             if ($value instanceof UnitEnum) { | ||||
|                 // -- получаю перечисление | ||||
|                 $result[$key] = $value->name; | ||||
|  | ||||
|                 // -- следующий элемент | ||||
|                 continue; | ||||
|             } | ||||
|  | ||||
|             // - если значение является NULL | ||||
|             if ($value == null) { | ||||
|                 // -- присваиваю NULL | ||||
|                 $result[$key] = "null"; | ||||
|                 // -- следующий элемент | ||||
|                 continue; | ||||
|             } | ||||
|  | ||||
|             // - присваиваю значение | ||||
|             $result[$key] = $value; | ||||
|         } | ||||
|  | ||||
|         // Сериализую массив и вывожу его | ||||
|         return serialize($result); | ||||
|         // Сериализую | ||||
|         return json_encode($result); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user