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:
		
							
								
								
									
										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