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.1
 | ||
|  * @since 1.0
 | ||
|  */
 | ||
| final class ActionStateMessage 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);
 | ||
|     }
 | ||
| } |