Download the PHP package winzou/state-machine-bundle without Composer
On this page you can find all versions of the php package winzou/state-machine-bundle. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download winzou/state-machine-bundle
More information about winzou/state-machine-bundle
Files in winzou/state-machine-bundle
Package state-machine-bundle
Short Description Bundle for the very lightweight yet powerful PHP state machine
License MIT
Informations about the package state-machine-bundle
A very lightweight yet powerful PHP state machine bundle
Define your states, define your transitions and your callbacks: we do the rest. The era of hard-coded states is over!
Installation
Installation (via composer)
Register the bundle
Usage
Configure a state machine graph
In order to use the state machine of this bundle, you first need to define a graph. A graph is a definition of states, transitions and optionally callbacks ; all attached on an object from your domain. Multiple graphs can be attached to the same object.
Let's define a graph called simple for our Article
object:
So, in the previous example, the object Article
has 6 possible states, and those can be achieved by applying some transitions to the entity. For example, when creating a new Article
, you would apply the 'create' transition to the entity, and after that the state of it would become pending_review.
Let's imagine now that, after an exhaustive review, someone decides the Article
was not good enough, so it would like to ask you for some changes. Therefore, they would apply the ask_for_changes transition, and now the state would be awaiting_changes.
Using the state machine
Definitions
The state machine is the object actually manipulating your object. By using the state machine you can test if a transition can be applied, actually apply a transition, retrieve the current state, etc. A state machine is specific to a couple object + graph. It means that if you want to manipulate another object, or the same object with another graph, you need another state machine.
The factory helps you to get the state machine for these couples object + graph. You give an object and a graph name to it, and it will return you the state machine for this couple. The factory is a service named SM\Factory\Factory
.
Usage
Now, the $articleSM
has a bunch of methods that will allow you to check if the desired transitions are possible, given the state of the object we have passed to it ($article
in our case). For example, we can:
Callbacks
Callbacks are used to guard transitions or execute some code before or after applying transitions. This bundle adds the ability to use Symfony2 services in the callbacks.
All versions of state-machine-bundle with dependencies
winzou/state-machine Version ~0.4
symfony/framework-bundle Version ^4.4|^5.4|^6.0|^7.0