takeoto/state

Abstraction for the state of system processes.

dev-main 2023-05-06 07:27 UTC

This package is auto-updated.

Last update: 2024-05-06 09:42:15 UTC


README

Abstraction for the state of system processes

Usage

use Takeoto\State\State;
use Takeoto\Message\NoticeMessage;
use Takeoto\Message\ErrorMessage;
use Takeoto\Message\WarningMessage;
use Takeoto\State\Utility\StateUtility;

$state = new State([
    new NoticeMessage('☀️The notice message.'),
    new WarningMessage('⚠️The warning message!'),
    new ErrorMessage(500, 'The error message ‼️'),
]);

$state->isOk(); # false
StateUtility::ensure($state); # Throws an exception

# ---

$state = new State([
    new NoticeMessage('☀️The notice message.'),
    new WarningMessage('⚠️The warning message!'),
]);
$state->isOk(); # true

# ---

$state = new State([], true);
$state->isOk(); # true

# ---

# $service = new SomeService();
# $state = $service->doSomeWork(...$args);
# 
# if (!$state->isOk()) {
#   throw new \RuntimeException($state->getMessages()->getErrors()->first());
# }