php_components_pack/sources/models/ActionStateMessageModel.php
babaev-an 2a03797bfe 20250505
[*: ActionStateMessageModel] улучшена реализация интерфейса ISerializable.

[*: ActionState] класс разбит на множество трейтов для более структурированности.

[*: ActionState] улучшена реализация интерфейса ISerializable.

[*: ActionState] класс внутреннего хранилища сообщений изменён на ObjectArray.

[*: ActionState] улучшена реализация метода Count.

[*: ActionState] улучшены реализации методов HasInfos, HasWarnings, HasErrors, IsSuccess, GetStringMessages и Clear.

 [*: ActionState] возвращаемое значение метода GetMessages заменено на ObjectArray.
2025-05-05 17:39:34 +03:00

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