This commit is contained in:
2025-02-03 18:49:47 +03:00
parent f1a79d66ec
commit dd62ad0ca4
1739 changed files with 154102 additions and 0 deletions

View File

@@ -0,0 +1,108 @@
<?php
namespace goodboyalex\php_components_pack\models;
use Exception;
use goodboyalex\php_components_pack\classes\ClassMapper;
use goodboyalex\php_components_pack\enums\MessageType;
use goodboyalex\php_components_pack\interfaces\ISerializable;
use UnitEnum;
/**
* Класс сообщения состояния.
*
* @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
{
// Десериализую массив
$thisNew = unserialize($serialized);
try {
// Получаю класс
$class = ClassMapper::MapToClassProperty(get_class($this), $thisNew);
}
catch (Exception) {
$class = new ActionStateMessageModel();
}
// Заполняю текущий класс
ClassMapper::MapClass($class, $this);
}
/**
* @inheritDoc
*/
public function Serialize (): string
{
// Создаю массив результата
$result = [];
// Получаю свойства класса
$properties = get_object_vars($this);
// Для каждого свойства класса
foreach ($properties as $key => $value) {
// - если значение является перечислением
if ($value instanceof UnitEnum) {
// -- получаю перечисление
$result[$key] = $value->name;
// -- следующий элемент
continue;
}
// - если значение является NULL
if ($value == null) {
// -- присваиваю NULL
$result[$key] = "null";
// -- следующий элемент
continue;
}
// - присваиваю значение
$result[$key] = $value;
}
// Сериализую массив и вывожу его
return serialize($result);
}
}