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);
|
||
}
|
||
} |