[*: 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);
|
|
}
|
|
} |