Define states using PHP Enums
mainIn Finite 2.0+, states are defined using a PHP Enum that implements the Finite\State interface. You must implement a static getTransitions() method that returns an array of Finite\Transition objects. Each Transition defines the name, the allowed source states (as an array), and the target state.
enum DocumentState: string implements State
{
case DRAFT = 'draft';
case PUBLISHED = 'published';
case REPORTED = 'reported';
case DISABLED = 'disabled';
public static function getTransitions(): array
{
return [
new Transition('publish', [self::DRAFT], self::PUBLISHED),
new Transition('clear', [self::REPORTED, self::DISABLED], self::PUBLISHED),
new Transition('report', [self::PUBLISHED], self::REPORTED),
new Transition('disable', [self::REPORTED, self::PUBLISHED], self::DISABLED),
];
}
}