承接 slava-basko/finite-state-machine 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

slava-basko/finite-state-machine

最新稳定版本:1.0.0

Composer 安装命令:

composer require slava-basko/finite-state-machine

包简介

README 文档

README

PHP State Machine.

Control transition of your entity from one state to another.

$stateDraft = new State('draft');
$stateReview = new State('review');
$stateApproved = new State('approved');
$stateRejected = new State('rejected');
$stateEditing = new State('editing');
$statePublished = new State('published');

$transitionToReview = new Transition('to_review', [$stateDraft, $stateEditing], $stateReview);
$transitionToApproved = new Transition('to_approved', [$stateReview], $stateApproved);
$transitionToRejected = new Transition('to_rejected', [$stateReview], $stateRejected);
$transitionToEditing = new Transition('to_editing', [$stateReview], $stateEditing);
$transitionToPublished = new Transition('to_published', [$stateApproved], $statePublished);

class Post {
    public $state = 'draft';
}

$stateMachine = new StateMachine(
    function (Post $post) {
        return new State($post->state);
    },
    function (Post $post, StateInterface $newState) {
        $post->state = $newState->getName();
    }
);

$stateMachine->addTransitions([
    $transitionToReview,
    $transitionToApproved,
    $transitionToRejected,
    $transitionToEditing,
    $transitionToPublished,
]);

$post = new Post();

$stateMachine->transition('to_review', $post); // Ok
$stateMachine->transition('to_published', $post); // NoSuitableTransitionException

fsm-example.jpg

统计信息

  • 总下载量: 1
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 3
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-10-04

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固