Skip to content

Latest commit

 

History

History
29 lines (18 loc) · 679 Bytes

README.md

File metadata and controls

29 lines (18 loc) · 679 Bytes

State machine

Usage examples

$inStock = new StatusObject('in-stock');
$ordered = new StatusObject('ordered');
$shipped = new StatusObject('shipped');

$inStock->addNextStatus($ordered);

$ordered->addNextStatus($shipped);
$ordered->addNextStatus($inStock); // in case of cancelling the order

$stateMachine = new StateMachine();

$model = new Order(); 
$model->setState($inStock);

if ($model->getState()->canChangeStatus($ordered)) {
	$stateMachine->process($model, $ordered);
}

Test

Build Status