[*: ActionStateMessageModel] улучшена реализация интерфейса ISerializable. [*: ActionState] класс разбит на множество трейтов для более структурированности. [*: ActionState] улучшена реализация интерфейса ISerializable. [*: ActionState] класс внутреннего хранилища сообщений изменён на ObjectArray. [*: ActionState] улучшена реализация метода Count. [*: ActionState] улучшены реализации методов HasInfos, HasWarnings, HasErrors, IsSuccess, GetStringMessages и Clear. [*: ActionState] возвращаемое значение метода GetMessages заменено на ObjectArray.
		
			
				
	
	
		
			78 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace goodboyalex\php_components_pack\models;
 | |
| 
 | |
| use goodboyalex\php_components_pack\enums\MessageType;
 | |
| use goodboyalex\php_components_pack\interfaces\ISerializable;
 | |
| 
 | |
| /**
 | |
|  * Класс сообщения состояния.
 | |
|  *
 | |
|  * @author Александр Бабаев
 | |
|  * @package php_components_pack
 | |
|  * @version 1.0
 | |
|  * @since 1.0
 | |
|  */
 | |
| final class ActionStateMessageModel implements ISerializable
 | |
| {
 | |
|     /**
 | |
|      * @var MessageType $MessageType Тип сообщения
 | |
|      */
 | |
|     public MessageType $MessageType;
 | |
| 
 | |
|     /**
 | |
|      * @var bool $IsCritical Критичность сообщения
 | |
|      */
 | |
|     public bool $IsCritical;
 | |
| 
 | |
|     /**
 | |
|      * @var string $Message Текст сообщения
 | |
|      */
 | |
|     public string $Message;
 | |
| 
 | |
|     /**
 | |
|      * Конструктор
 | |
|      *
 | |
|      * @param MessageType $type Тип сообщения
 | |
|      * @param bool $isCritical Критичность сообщения
 | |
|      * @param string $message Текст сообщения
 | |
|      */
 | |
|     public function __construct (MessageType $type = MessageType::Info, bool $isCritical = false, string $message = "")
 | |
|     {
 | |
|         $this->MessageType = $type;
 | |
|         $this->IsCritical = $isCritical;
 | |
|         $this->Message = $message;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @inheritDoc
 | |
|      */
 | |
|     public function UnSerialize (string $serialized): void
 | |
|     {
 | |
|         // Десериализую массив
 | |
|         $array = json_decode($serialized, true);
 | |
| 
 | |
|         // Заполняю поля
 | |
|         $this->MessageType =
 | |
|             isset($array["MessageType"]) ? MessageType::FromName($array["MessageType"]) : MessageType::Info;
 | |
|         $this->IsCritical = isset($array["IsCritical"]) && $array["IsCritical"] == 1;
 | |
|         $this->Message = $array["Message"] ?? "";
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @inheritDoc
 | |
|      */
 | |
|     public function Serialize (): string
 | |
|     {
 | |
|         // Создаю массив результата
 | |
|         $result = [];
 | |
| 
 | |
|         // Заполняю массив
 | |
|         $result["MessageType"] = $this->MessageType->GetValue();
 | |
|         $result["IsCritical"] = $this->IsCritical ? 1 : 0;
 | |
|         $result["Message"] = $this->Message;
 | |
| 
 | |
|         // Сериализую
 | |
|         return json_encode($result);
 | |
|     }
 | |
| } |