1. Go to this page and download the library: Download pwm/s-flow library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
pwm / s-flow example snippets
// S, E and T are short for State, Event and Transition
// A list of state names that identify the states
$stateNames = [
S\NoItems::name(),
S\HasItems::name(),
S\NoCard::name(),
S\CardSelected::name(),
S\CardConfirmed::name(),
S\OrderPlaced::name(),
];
// A list of arrows labelled by event names
// An arrow goes from a start state via a transition to an end state
$arrows = [
(new Arrow(E\Select::name()))->from(S\NoItems::name())->via(new T\AddFirstItem),
(new Arrow(E\Select::name()))->from(S\HasItems::name())->via(new T\AddItem),
(new Arrow(E\Checkout::name()))->from(S\HasItems::name())->via(new T\DoCheckout),
(new Arrow(E\SelectCard::name()))->from(S\NoCard::name())->via(new T\DoSelectCard),
(new Arrow(E\Confirm::name()))->from(S\CardSelected::name())->via(new T\ConfirmCard),
(new Arrow(E\PlaceOrder::name()))->from(S\CardConfirmed::name())->via(new T\DoPlaceOrder),
(new Arrow(E\Cancel::name()))->from(S\NoCard::name())->via(new T\DoCancel),
(new Arrow(E\Cancel::name()))->from(S\CardSelected::name())->via(new T\DoCancel),
(new Arrow(E\Cancel::name()))->from(S\CardConfirmed::name())->via(new T\DoCancel),
];
// Build a graph from the above
$graph = (new Graph(...$stateNames))->drawArrows(...$arrows);
// Build an FSM using the graph
$shoppingCartFSM = new FSM($graph);
// Run a simulation of purchasing 3 items
$result = $shoppingCartFSM->run(
new S\NoItems,
new Events(
new E\Select(new Item('foo')),
new E\Select(new Item('bar')),
new E\Select(new Item('baz')),
new E\Checkout,
new E\SelectCard(new Card('Visa', '1234567812345678')),
new E\Confirm,
new E\PlaceOrder
)
);
// Observe the results
assert($result->isSuccess() === true);
assert($result->getState() instanceof S\OrderPlaced);
assert($result->getLastEvent() instanceof E\PlaceOrder);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.