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