libriciel / cakephp-state-machine
StateMachineBehavior for CakePHP 3
Package info
gitlab.adullact.net/Libriciel/archivage/cakephp-state-machine.git
Type:cakephp-plugin
pkg:composer/libriciel/cakephp-state-machine
Requires
- php: >=7.1
- ext-json: *
- cakephp/cakephp: ^3.5 || ^4.0
Requires (Dev)
- phpunit/phpunit: ^6.0 || ^8.5
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-29 13:25:24 UTC
README
Behavior CakePHP 4 de machine à états : transitions entre états d'une entité, callbacks, historique des états et export du graphe au format Graphviz.
Dépendance de
| Projet | Build | Coverage |
|---|---|---|
| asalae | ||
| versae | ||
| asalae-core | ||
| cakephp-beanstalk |
Prérequis
- PHP
>=7.1avec l'extensionjson dot(paquetgraphviz), uniquement pour générer le graphe des transitions (DotShell)
Installation
composer require libriciel/cakephp-state-machine:dev-master
Colonnes nécessaires sur la table (noms configurables via l'option fields) : state, previous_state, last_state_update, states_history.
Utilisation
Model/Behavior
StateMachineBehavior : la table déclare son état initial ($initialState) et ses transitions ($transitions : transition => [état de départ => état d'arrivée]). Méthodes : transition(), transitionOrFail(), transitionAll(), can(), is(), getCurrentState(), getPreviousState(), getAvailableStates(), on() et when() (callbacks sur transition ou état), toDot().
src/Model/Table/TransfersTable.php (asalae)
public $initialState = self::S_CREATING;
// ...
public $transitions = [
self::T_PREPARE => [
self::S_CREATING => self::S_PREPARATING,
self::S_REJECTED => self::S_PREPARATING,
],
self::T_TIMESTAMP => [
self::S_PREPARATING => self::S_TIMESTAMPING,
],
self::T_ANALYSE => [
self::S_PREPARATING => self::S_ANALYSING,
self::S_TIMESTAMPING => self::S_ANALYSING,
],
// ...
];
$this->addBehavior(
'StateMachine.StateMachine',
[
'fields' => [
'states_history' => 'state_history',
src/Command/CompositeFillerCommand.php (asalae)
$Transfers->transitionOrFail($entity, TransfersTable::T_PREPARE);
$Transfers->transitionOrFail($entity, TransfersTable::T_ANALYSE);
Shell
DotShell (arguments <Model> [filename], option -o <dossier>) : génère le graphe des transitions d'une table au format Graphviz (.dot) et son rendu PNG (binaire dot requis).
Licence
Fork de davidsteinsland/cakephp-state-machine (David Steinsland, licence MIT), dont le dépôt GitHub n'est plus en ligne. L'historique d'origine est conservé dans ce dépôt. Voir LICENSE.