20250505
[*: ActionStateMessageModel] улучшена реализация интерфейса ISerializable. [*: ActionState] класс разбит на множество трейтов для более структурированности. [*: ActionState] улучшена реализация интерфейса ISerializable. [*: ActionState] класс внутреннего хранилища сообщений изменён на ObjectArray. [*: ActionState] улучшена реализация метода Count. [*: ActionState] улучшены реализации методов HasInfos, HasWarnings, HasErrors, IsSuccess, GetStringMessages и Clear. [*: ActionState] возвращаемое значение метода GetMessages заменено на ObjectArray.
This commit is contained in:
@@ -7,10 +7,12 @@
|
||||
|
||||
namespace goodboyalex\php_components_pack\classes;
|
||||
|
||||
use Closure;
|
||||
use goodboyalex\php_components_pack\enums\MessageType;
|
||||
use goodboyalex\php_components_pack\interfaces\ISerializable;
|
||||
use goodboyalex\php_components_pack\models\ActionStateMessageModel;
|
||||
use goodboyalex\php_components_pack\traits\ActionState\ActionStateAddTrait;
|
||||
use goodboyalex\php_components_pack\traits\ActionState\ActionStateGetTrait;
|
||||
use goodboyalex\php_components_pack\traits\ActionState\ActionStateHasTrait;
|
||||
use goodboyalex\php_components_pack\traits\ActionState\ActionStateStaticTrait;
|
||||
|
||||
/**
|
||||
* Состояние действия.
|
||||
@@ -28,9 +30,9 @@ final class ActionState implements ISerializable
|
||||
public mixed $Value;
|
||||
|
||||
/**
|
||||
* @var array $Messages Список информации
|
||||
* @var ObjectArray $Messages Список информации
|
||||
*/
|
||||
private array $Messages = [];
|
||||
private ObjectArray $Messages;
|
||||
|
||||
/**
|
||||
* Конструктор
|
||||
@@ -39,218 +41,24 @@ final class ActionState implements ISerializable
|
||||
*/
|
||||
public function __construct (mixed $defValue = null)
|
||||
{
|
||||
// Присваиваю значение по умолчанию
|
||||
$this->Value = $defValue;
|
||||
|
||||
// Создаю список сообщений
|
||||
$this->Messages = new ObjectArray([]);
|
||||
}
|
||||
|
||||
/**
|
||||
* При выводе GetStringMessages выводит только ошибки.
|
||||
*
|
||||
* @return Closure Возвращает функцию, проверяющую сообщение на соответствие типу.
|
||||
*/
|
||||
public static function GET_STRING_ERROR_ONLY (): Closure
|
||||
{
|
||||
return fn (ActionStateMessageModel $message)
|
||||
=> $message->MessageType === MessageType::Error;
|
||||
}
|
||||
// Статичные методы и константы
|
||||
use ActionStateStaticTrait;
|
||||
|
||||
/**
|
||||
* При выводе GetStringMessages выводит ошибки и предупреждения.
|
||||
*
|
||||
* @return Closure Возвращает функцию, проверяющую сообщение на соответствие типу.
|
||||
*/
|
||||
public static function GET_STRING_ERROR_AND_WARNING (): Closure
|
||||
{
|
||||
return fn (ActionStateMessageModel $message)
|
||||
=> $message->MessageType === MessageType::Error
|
||||
|| $message->MessageType === MessageType::Warning;
|
||||
}
|
||||
// Методы добавления сообщений
|
||||
use ActionStateAddTrait;
|
||||
|
||||
/**
|
||||
* При выводе GetStringMessages выводит все сообщения.
|
||||
*
|
||||
* @return Closure Возвращает функцию, проверяющую сообщение на соответствие типу.
|
||||
*/
|
||||
public static function GET_STRING_ALL (): Closure
|
||||
{
|
||||
return fn (ActionStateMessageModel $message) => true;
|
||||
}
|
||||
// Методы проверки на наличие сообщений
|
||||
use ActionStateHasTrait;
|
||||
|
||||
/**
|
||||
* Добавляет данные из другого состояния.
|
||||
*
|
||||
* @param ActionState $state Другое состояние
|
||||
* @param bool $clearAllBefore Очищать сообщения перед добавлением (true) или просто добавить к текущим (false)
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function AddState (ActionState $state, bool $clearAllBefore = false): void
|
||||
{
|
||||
// Если нужно очистить список сообщений
|
||||
if ($clearAllBefore)
|
||||
// - то очищаю список сообщений
|
||||
$this->Clear(fn (ActionStateMessageModel $message) => true);
|
||||
|
||||
// Добавляю сообщения из другого состояния
|
||||
$this->AddRange($state->GetMessages(function (ActionStateMessageModel $message)
|
||||
{
|
||||
return true;
|
||||
}));
|
||||
|
||||
// Добавляю значение
|
||||
$this->Value = $state->Value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Очищает список сообщений, согласно условию.
|
||||
*
|
||||
* @param callable $predicate Условие выборки
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function Clear (callable $predicate): void
|
||||
{
|
||||
// Выбираю все сообщения, удовлетворяющие условию
|
||||
$list = $this->GetMessages($predicate);
|
||||
|
||||
// Удаляю их из списка
|
||||
$this->Messages = array_diff($this->Messages, $list);
|
||||
}
|
||||
|
||||
/**
|
||||
* Выбирает сообщения по условию predicate.
|
||||
*
|
||||
* @param callable $predicate Условие выборки
|
||||
*
|
||||
* @return array Список отобранных сообщений
|
||||
*/
|
||||
public function GetMessages (callable $predicate): array
|
||||
{
|
||||
// Получаю список элементов
|
||||
$list = [];
|
||||
|
||||
// Для каждого элемента
|
||||
foreach ($this->Messages as $actionStateMessage)
|
||||
// - если он подходит под условие
|
||||
if ($predicate($actionStateMessage))
|
||||
// - добавляю его в список
|
||||
$list[] = $actionStateMessage;
|
||||
|
||||
// Возвращаю список
|
||||
return $list;
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавляет список
|
||||
*
|
||||
* @param array $messages Список сообщений
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function AddRange (array $messages): void
|
||||
{
|
||||
$this->Messages = array_merge($this->Messages, $messages);
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает список сообщений (параметр Message у каждого сообщения).
|
||||
*
|
||||
* @param callable $predicate Условие выборки
|
||||
* @param string $separator Разделитель
|
||||
*
|
||||
* @return string Список сообщений
|
||||
*/
|
||||
public function GetStringMessages (callable $predicate, string $separator = '\n'): string
|
||||
{
|
||||
// Делаю выборку
|
||||
$list = $this->GetMessages($predicate);
|
||||
|
||||
// Формирую список сообщений
|
||||
$result = [];
|
||||
|
||||
// Для каждого сообщения из выборки
|
||||
foreach ($list as $message) {
|
||||
// - если оно не нужного нам класса
|
||||
if (!$message instanceof ActionStateMessageModel)
|
||||
// -- то пропускаю
|
||||
continue;
|
||||
|
||||
// - добавляю сообщение
|
||||
$result[] = $message->Message;
|
||||
}
|
||||
|
||||
// Возвращаю список
|
||||
return implode($separator, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавляет сообщение о критической ошибке.
|
||||
*
|
||||
* @param string $message Сообщение
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function AddCritical (string $message): void
|
||||
{
|
||||
$this->Add(new ActionStateMessageModel(MessageType::Error, true, $message));
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавление сообщения.
|
||||
*
|
||||
* @param ActionStateMessageModel $message Сообщение
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function Add (ActionStateMessageModel $message): void
|
||||
{
|
||||
$this->Messages[] = $message;
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавляет сообщение об ошибке.
|
||||
*
|
||||
* @param string $message Сообщение
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function AddError (string $message): void
|
||||
{
|
||||
$this->Add(new ActionStateMessageModel(MessageType::Error, false, $message));
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавляет предупреждение.
|
||||
*
|
||||
* @param string $message Сообщение.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function AddWarning (string $message): void
|
||||
{
|
||||
$this->Add(new ActionStateMessageModel(MessageType::Warning, false, $message));
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавляет информационное сообщение.
|
||||
*
|
||||
* @param string $message Сообщение.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function AddInfo (string $message): void
|
||||
{
|
||||
$this->Add(new ActionStateMessageModel(MessageType::Info, false, $message));
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет, есть ли информационные сообщения.
|
||||
*
|
||||
* @return bool Наличие сообщений
|
||||
*/
|
||||
public function HasInfos (): bool
|
||||
{
|
||||
return $this->Count(fn (ActionStateMessageModel $message) => $message->MessageType == MessageType::Info) > 0;
|
||||
}
|
||||
// Методы получения сообщений
|
||||
use ActionStateGetTrait;
|
||||
|
||||
/**
|
||||
* Количество сообщений, удовлетворяющих условию.
|
||||
@@ -261,65 +69,7 @@ final class ActionState implements ISerializable
|
||||
*/
|
||||
public function Count (callable $predicate): int
|
||||
{
|
||||
// Получаю список сообщений
|
||||
$list = $this->GetMessages($predicate);
|
||||
|
||||
// Возвращаю результат
|
||||
return count($list);
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет, успешно ли завершилась операция.
|
||||
*
|
||||
* @param bool $onlyCritical Игнорировать все некритические ошибки и предупреждения (не рекомендуется!)
|
||||
*
|
||||
* @return bool Успешно ли завершилась операция.
|
||||
*/
|
||||
public function IsSuccess (bool $onlyCritical = false): bool
|
||||
{
|
||||
// Если нужно учитывать только критические ошибки
|
||||
if ($onlyCritical)
|
||||
// - то проверяю наличие критических ошибок
|
||||
return !$this->HasErrors($onlyCritical);
|
||||
|
||||
// Возвращаю результат
|
||||
return !$this->HasErrors() && !$this->HasWarnings();
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет, есть ли ошибки.
|
||||
*
|
||||
* @param bool $onlyCritical Учитывать только критические ошибки.
|
||||
*
|
||||
* @return bool Наличие ошибок.
|
||||
*/
|
||||
public function HasErrors (bool $onlyCritical = false): bool
|
||||
{
|
||||
return $this->Count(function (ActionStateMessageModel $message) use ($onlyCritical): bool
|
||||
{
|
||||
// - сравниваю тип сообщения
|
||||
if ($message->MessageType != MessageType::Error)
|
||||
// -- если не совпадает, то возвращаю false
|
||||
return false;
|
||||
|
||||
// - если нужно выводить только критические ошибки, а сообщение не критическое
|
||||
if ($onlyCritical && !$message->IsCritical)
|
||||
// -- то возвращаю false
|
||||
return false;
|
||||
|
||||
// Возвращаю true
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет, есть ли предупреждения.
|
||||
*
|
||||
* @return bool Наличие предупреждений
|
||||
*/
|
||||
public function HasWarnings (): bool
|
||||
{
|
||||
return $this->Count(fn (ActionStateMessageModel $message) => $message->MessageType == MessageType::Warning) > 0;
|
||||
return $this->Messages->Count($predicate);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -336,7 +86,7 @@ final class ActionState implements ISerializable
|
||||
$list[] = $message->Serialize();
|
||||
|
||||
// Возвращаю результат
|
||||
return serialize($list);
|
||||
return json_encode($list);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -345,10 +95,10 @@ final class ActionState implements ISerializable
|
||||
public function UnSerialize (string $serialized): void
|
||||
{
|
||||
// Очищаю список сообщений
|
||||
$this->Clear(fn (ActionStateMessageModel $message) => true);
|
||||
$this->Clear(self::GET_STRING_ALL());
|
||||
|
||||
// Десериализую список сообщений
|
||||
$list = unserialize($serialized);
|
||||
$list = json_decode($serialized, true);
|
||||
|
||||
// Для каждого сообщения
|
||||
foreach ($list as $messageSerialized) {
|
||||
@@ -360,4 +110,16 @@ final class ActionState implements ISerializable
|
||||
$this->Add($message);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Очищает список сообщений, согласно условию.
|
||||
*
|
||||
* @param callable $predicate Условие выборки
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function Clear (callable $predicate): void
|
||||
{
|
||||
$this->Messages->Delete($predicate);
|
||||
}
|
||||
}
|
@@ -2,11 +2,8 @@
|
||||
|
||||
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;
|
||||
|
||||
/**
|
||||
* Класс сообщения состояния.
|
||||
@@ -53,18 +50,13 @@ final class ActionStateMessageModel implements ISerializable
|
||||
public function UnSerialize (string $serialized): void
|
||||
{
|
||||
// Десериализую массив
|
||||
$thisNew = unserialize($serialized);
|
||||
$array = json_decode($serialized, true);
|
||||
|
||||
try {
|
||||
// Получаю класс
|
||||
$class = ClassMapper::MapToClassProperty(get_class($this), $thisNew);
|
||||
}
|
||||
catch (Exception) {
|
||||
$class = new ActionStateMessageModel();
|
||||
}
|
||||
|
||||
// Заполняю текущий класс
|
||||
ClassMapper::MapClass($class, $this);
|
||||
// Заполняю поля
|
||||
$this->MessageType =
|
||||
isset($array["MessageType"]) ? MessageType::FromName($array["MessageType"]) : MessageType::Info;
|
||||
$this->IsCritical = isset($array["IsCritical"]) && $array["IsCritical"] == 1;
|
||||
$this->Message = $array["Message"] ?? "";
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -75,34 +67,12 @@ final class ActionStateMessageModel implements ISerializable
|
||||
// Создаю массив результата
|
||||
$result = [];
|
||||
|
||||
// Получаю свойства класса
|
||||
$properties = get_object_vars($this);
|
||||
// Заполняю массив
|
||||
$result["MessageType"] = $this->MessageType->GetValue();
|
||||
$result["IsCritical"] = $this->IsCritical ? 1 : 0;
|
||||
$result["Message"] = $this->Message;
|
||||
|
||||
// Для каждого свойства класса
|
||||
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);
|
||||
// Сериализую
|
||||
return json_encode($result);
|
||||
}
|
||||
}
|
114
sources/traits/ActionState/ActionStateAddTrait.php
Normal file
114
sources/traits/ActionState/ActionStateAddTrait.php
Normal file
@@ -0,0 +1,114 @@
|
||||
<?php
|
||||
|
||||
namespace goodboyalex\php_components_pack\traits\ActionState;
|
||||
|
||||
use goodboyalex\php_components_pack\classes\ActionState;
|
||||
use goodboyalex\php_components_pack\classes\ObjectArray;
|
||||
use goodboyalex\php_components_pack\enums\MessageType;
|
||||
use goodboyalex\php_components_pack\models\ActionStateMessageModel;
|
||||
|
||||
/**
|
||||
* Часть кода класса ActionState, отвечающая за методы добавления сообщений.
|
||||
*
|
||||
* @author Александр Бабаев
|
||||
* @package php_components_pack
|
||||
* @version 1.0
|
||||
* @since 1.0.13
|
||||
*/
|
||||
trait ActionStateAddTrait
|
||||
{
|
||||
/**
|
||||
* Добавляет данные из другого состояния.
|
||||
*
|
||||
* @param ActionState $state Другое состояние
|
||||
* @param bool $clearAllBefore Очищать сообщения перед добавлением (true) или просто добавить к текущим (false)
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function AddState (ActionState $state, bool $clearAllBefore = false): void
|
||||
{
|
||||
// Если нужно очистить список сообщений
|
||||
if ($clearAllBefore)
|
||||
// - то очищаю список сообщений
|
||||
$this->Clear(fn (ActionStateMessageModel $message) => true);
|
||||
|
||||
// Добавляю сообщения из другого состояния
|
||||
$this->AddRange($state->GetMessages(ActionState::GET_STRING_ALL()));
|
||||
|
||||
// Добавляю значение
|
||||
$this->Value = $state->Value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавляет список
|
||||
*
|
||||
* @param ObjectArray|array $messages Список сообщений
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function AddRange (ObjectArray|array $messages): void
|
||||
{
|
||||
// Добавляю сообщения
|
||||
$this->Messages->AddRange($messages);
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавляет сообщение о критической ошибке.
|
||||
*
|
||||
* @param string $message Сообщение
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function AddCritical (string $message): void
|
||||
{
|
||||
$this->Add(new ActionStateMessageModel(MessageType::Error, true, $message));
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавление сообщения.
|
||||
*
|
||||
* @param ActionStateMessageModel $message Сообщение
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function Add (ActionStateMessageModel $message): void
|
||||
{
|
||||
$this->Messages->Add($message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавляет сообщение об ошибке.
|
||||
*
|
||||
* @param string $message Сообщение
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function AddError (string $message): void
|
||||
{
|
||||
$this->Add(new ActionStateMessageModel(MessageType::Error, false, $message));
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавляет предупреждение.
|
||||
*
|
||||
* @param string $message Сообщение.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function AddWarning (string $message): void
|
||||
{
|
||||
$this->Add(new ActionStateMessageModel(MessageType::Warning, false, $message));
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавляет информационное сообщение.
|
||||
*
|
||||
* @param string $message Сообщение.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function AddInfo (string $message): void
|
||||
{
|
||||
$this->Add(new ActionStateMessageModel(MessageType::Info, false, $message));
|
||||
}
|
||||
}
|
45
sources/traits/ActionState/ActionStateGetTrait.php
Normal file
45
sources/traits/ActionState/ActionStateGetTrait.php
Normal file
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
namespace goodboyalex\php_components_pack\traits\ActionState;
|
||||
|
||||
use goodboyalex\php_components_pack\classes\ObjectArray;
|
||||
|
||||
/**
|
||||
* Часть кода класса ActionState, отвечающая за методы получения сообщений.
|
||||
*
|
||||
* @author Александр Бабаев
|
||||
* @package php_components_pack
|
||||
* @version 1.0
|
||||
* @since 1.0.13
|
||||
*/
|
||||
trait ActionStateGetTrait
|
||||
{
|
||||
/**
|
||||
* Возвращает список сообщений (параметр Message у каждого сообщения).
|
||||
*
|
||||
* @param callable $predicate Условие выборки
|
||||
* @param string $separator Разделитель
|
||||
*
|
||||
* @return string Список сообщений
|
||||
*/
|
||||
public function GetStringMessages (callable $predicate, string $separator = '\n'): string
|
||||
{
|
||||
// Делаю выборку
|
||||
$result = $this->Messages->GetColumn("Message", $predicate);
|
||||
|
||||
// Возвращаю список
|
||||
return implode($separator, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Выбирает сообщения по условию predicate.
|
||||
*
|
||||
* @param callable $predicate Условие выборки
|
||||
*
|
||||
* @return ObjectArray Список отобранных сообщений
|
||||
*/
|
||||
public function GetMessages (callable $predicate): ObjectArray
|
||||
{
|
||||
return $this->Messages->GetRows($predicate);
|
||||
}
|
||||
}
|
68
sources/traits/ActionState/ActionStateHasTrait.php
Normal file
68
sources/traits/ActionState/ActionStateHasTrait.php
Normal file
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
namespace goodboyalex\php_components_pack\traits\ActionState;
|
||||
|
||||
use goodboyalex\php_components_pack\enums\MessageType;
|
||||
use goodboyalex\php_components_pack\models\ActionStateMessageModel;
|
||||
|
||||
/**
|
||||
* Часть кода класса ActionState, отвечающая за методы проверки на наличие сообщений.
|
||||
*
|
||||
* @author Александр Бабаев
|
||||
* @package php_components_pack
|
||||
* @version 1.0
|
||||
* @since 1.0.13
|
||||
*/
|
||||
trait ActionStateHasTrait
|
||||
{
|
||||
/**
|
||||
* Проверяет, есть ли информационные сообщения.
|
||||
*
|
||||
* @return bool Наличие сообщений
|
||||
*/
|
||||
public function HasInfos (): bool
|
||||
{
|
||||
return $this->Messages->IsExist(fn (ActionStateMessageModel $message)
|
||||
=> $message->MessageType
|
||||
== MessageType::Info);
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет, успешно ли завершилась операция.
|
||||
*
|
||||
* @param bool $onlyCritical Игнорировать все некритические ошибки и предупреждения (не рекомендуется!)
|
||||
*
|
||||
* @return bool Успешно ли завершилась операция.
|
||||
*/
|
||||
public function IsSuccess (bool $onlyCritical = false): bool
|
||||
{
|
||||
return ($onlyCritical) ? !$this->HasErrors($onlyCritical) : !$this->HasErrors() && !$this->HasWarnings();
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет, есть ли ошибки.
|
||||
*
|
||||
* @param bool $onlyCritical Учитывать только критические ошибки.
|
||||
*
|
||||
* @return bool Наличие ошибок.
|
||||
*/
|
||||
public function HasErrors (bool $onlyCritical = false): bool
|
||||
{
|
||||
return $this->Messages->IsExist(fn (ActionStateMessageModel $message): bool
|
||||
=> $onlyCritical
|
||||
? $message->MessageType == MessageType::Error && $message->IsCritical
|
||||
: $message->MessageType == MessageType::Error);
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет, есть ли предупреждения.
|
||||
*
|
||||
* @return bool Наличие предупреждений
|
||||
*/
|
||||
public function HasWarnings (): bool
|
||||
{
|
||||
return $this->Messages->IsExist(fn (ActionStateMessageModel $message)
|
||||
=> $message->MessageType
|
||||
== MessageType::Warning);
|
||||
}
|
||||
}
|
51
sources/traits/ActionState/ActionStateStaticTrait.php
Normal file
51
sources/traits/ActionState/ActionStateStaticTrait.php
Normal file
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace goodboyalex\php_components_pack\traits\ActionState;
|
||||
|
||||
use Closure;
|
||||
use goodboyalex\php_components_pack\enums\MessageType;
|
||||
use goodboyalex\php_components_pack\models\ActionStateMessageModel;
|
||||
|
||||
/**
|
||||
* Часть кода класса ActionState, отвечающая за статичные методы и константы.
|
||||
*
|
||||
* @author Александр Бабаев
|
||||
* @package php_components_pack
|
||||
* @version 1.0
|
||||
* @since 1.0.13
|
||||
*/
|
||||
trait ActionStateStaticTrait
|
||||
{
|
||||
/**
|
||||
* При выводе GetStringMessages выводит только ошибки.
|
||||
*
|
||||
* @return Closure Возвращает функцию, проверяющую сообщение на соответствие типу.
|
||||
*/
|
||||
public static function GET_STRING_ERROR_ONLY (): Closure
|
||||
{
|
||||
return fn (ActionStateMessageModel $message)
|
||||
=> $message->MessageType === MessageType::Error;
|
||||
}
|
||||
|
||||
/**
|
||||
* При выводе GetStringMessages выводит ошибки и предупреждения.
|
||||
*
|
||||
* @return Closure Возвращает функцию, проверяющую сообщение на соответствие типу.
|
||||
*/
|
||||
public static function GET_STRING_ERROR_AND_WARNING (): Closure
|
||||
{
|
||||
return fn (ActionStateMessageModel $message)
|
||||
=> $message->MessageType === MessageType::Error
|
||||
|| $message->MessageType === MessageType::Warning;
|
||||
}
|
||||
|
||||
/**
|
||||
* При выводе GetStringMessages выводит все сообщения.
|
||||
*
|
||||
* @return Closure Возвращает функцию, проверяющую сообщение на соответствие типу.
|
||||
*/
|
||||
public static function GET_STRING_ALL (): Closure
|
||||
{
|
||||
return fn (ActionStateMessageModel $message) => true;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user