20250713 1.1.1

This commit is contained in:
2025-07-13 12:23:08 +03:00
parent 117deab9d8
commit 62762374e0
14 changed files with 386 additions and 41 deletions

View File

@@ -0,0 +1,78 @@
<?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);
}
}