StateMachine é uma biblioteca PHP para gerenciar máquinas de estados com a facilidade de configuração através de arquivos YAML. Com suporte adicional para a visualização da máquina de estados usando Graphviz.
Para instalar a biblioteca, você pode usar o composer:
composer require ananiaslitz/state-machine
Exemplo de state-machine.yaml:
workflows:
first_workflow:
initialState: "idle1"
states:
- name: "idle1"
- name: "running1"
- name: "stopped1"
transitions:
- name: "start1"
from: "idle1"
to: "running1"
rules:
- "Ananiaslitz\\StateMachine\\Rules\\IsUrgentRule::class"
require 'vendor/autoload.php';
$loader = new StateMachineLoader();
$data = $loader->createStateMachines();
Para visualizar a máquina de estados, você pode gerar um diagrama utilizando o Graphviz.
Instale o Graphviz:
Para sistemas baseados em Debian/Ubuntu:
sudo apt-get install graphviz
Para gerar o diagrama, execute:
php /vendor/bin/state-machine [formato]
Onde [formato] é opcional e pode ser png, svg, pdf, etc. Se nenhum formato for fornecido, será gerado um PNG por padrão.
Exemplo:
php /vendor/bin/state-machine [formato]
Após a execução, um arquivo de diagrama (por exemplo, state_machine.png) será gerado na raiz do seu projeto.
Sinta-se à vontade para abrir issues ou enviar pull requests. Sua colaboração é bem-vinda!
MIT License