25 lines
602 B
PHP
25 lines
602 B
PHP
|
|
<?php
|
||
|
|
|
||
|
|
require_once __DIR__."/../vendor/autoload.php";
|
||
|
|
|
||
|
|
use NoccyLabs\StateMachine\StateTrait;
|
||
|
|
use NoccyLabs\StateMachine\Attributes\ValidTransitions;
|
||
|
|
|
||
|
|
enum OrderState {
|
||
|
|
use StateTrait;
|
||
|
|
#[ValidTransitions([OrderState::PROCESSING])]
|
||
|
|
case PENDING;
|
||
|
|
#[ValidTransitions([OrderState::PROCESSED,OrderState::PENDING])]
|
||
|
|
case PROCESSING;
|
||
|
|
#[ValidTransitions([OrderState::SHIPPED])]
|
||
|
|
case PROCESSED;
|
||
|
|
#[NoValidTransitions]
|
||
|
|
case SHIPPED;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
$os = OrderState::PENDING;
|
||
|
|
var_dump($os->canTransitionTo(OrderState::PROCESSING));
|
||
|
|
var_dump($os->canTransitionTo(OrderState::PROCESSED));
|
||
|
|
|