esampaio/state-machine

PHP项目的状态机库

dev-master 2014-01-27 15:47 UTC

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"

查看源代码和/或测试以更好地理解。

贡献

  1. 将其Fork
  2. 创建您的功能分支(git checkout -b my-new-feature
  3. 提交您的更改(git commit -am '添加了一些功能'
  4. 推送到分支(git push origin my-new-feature
  5. 创建新的Pull Request