esampaio / state-machine
PHP项目的状态机库
dev-master
2014-01-27 15:47 UTC
Requires
- php: >=5.3.2
- doctrine/common: >=2.3.0
This package is not auto-updated.
Last update: 2024-09-23 14:03:22 UTC
README
一个简单的State Machine PHP包。
安装
要安装,只需将以下内容添加到您的composer.json中
"require": { "esampaio/state-machine":"master" }
用法
PHP版本5.3
如果您正在运行PHP 5.3,则需要继承StateMachine类
<?php use Esampaio\StateMachine\StateMachine; class MyClass extends StateMachine {
PHP版本5.4
如果您正在运行PHP版本5.4,则只需使用Trait
use Esampaio\StateMachine\Traits\StateMachine; class MyClass { use StateMachine;
注解
要添加可能的状态和转换,请使用以下注解
use Esampaio\StateMachine\Traits\StateMachine; use Esampaio\StateMachine\States; use Esampaio\StateMachine\Transition; /** * @States(states = {"requested", "approved", "rejected"}) * @Transition(state = "requested", transitions = {"approved", "rejected"}) */ class MyClass { use StateMachine;
魔法!
将为每个状态创建以下方法
$foo->isRequested(); // Check if foo's current state equals "requested" $foo->canApproved(); // Check if foo's current state allows transition to "approved" $foo->transitionRejected(); // Transitions current foo's state to "rejected"
当发生转换时,将触发两个方法,您可以实现它们(如果需要的话)
$foo->beforeRejected(); // Triggered before foo's state is changed into "rejected" $foo->afterRejected(); // Triggered after foo's state is changed into "rejected"
查看源代码和/或测试以更好地理解。
贡献
- 将其Fork
- 创建您的功能分支(
git checkout -b my-new-feature
) - 提交您的更改(
git commit -am '添加了一些功能'
) - 推送到分支(
git push origin my-new-feature
) - 创建新的Pull Request