php_components_pack/sources/traits/ActionState/ActionStateHasTrait.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

68 lines
2.3 KiB
PHP

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