davispeixoto/workflow

用于管理状态转换的PHP包

1.0.2 2019-01-24 08:49 UTC

This package is auto-updated.

Last update: 2024-09-24 22:05:01 UTC


README

用于处理状态转换的PHP包。

Latest Stable Version Total Downloads Scrutinizer Code Quality Code Coverage Build Status

状态转换是管理应用程序生命周期和工作流程的好方法,例如

  • 电子商务中的订单和支付状态
  • 金融系统中的发票状态
  • 票务服务台系统中的票务状态
  • CRM中的销售状态

安装

可以通过Composer安装工作流程包,在项目的composer.json中添加davispeixoto/workflow包,然后从终端运行composer update。

{
    "require": {
        "davispeixoto/workflow": "~1.0"
    }
}

或者

$ php composer.phar require davispeixoto/workflow

在终端运行composer update

php composer.phar update

使用方法

要使用它,首先需要创建用于表示状态的状态。

<?php
use MyCLabs\Enum\Enum;

class SalesStates extends Enum
{
    public const NEW = 'new';
    public const DEALING = 'dealing';
    public const WON = 'won';
    public const LOST = 'lost';
}

然后可以根据有效的转换创建工作流程

<?php
use Davispeixoto\WorkflowInterface\Transition;
use Davispeixoto\WorkflowInterface\WorkflowInterface;

class SalesWorkflow extends WorkflowInterface
{
    public function __construct(SalesStates $initialStatus)
    {
        parent::__construct($initialStatus);

        // setup the transitions
        $transitions = [];

        $transitions[] = new Transition(
            new SalesStates(SalesStates::NEW),
            new SalesStates(SalesStates::DEALING)
        );

        $transitions[] = new Transition(
            new SalesStates(SalesStates::DEALING),
            new SalesStates(SalesStates::WON)
        );

        $transitions[] = new Transition(
            new SalesStates(SalesStates::DEALING),
            new SalesStates(SalesStates::LOST)
        );

        $this->allowedTransitions = $transitions;

        // setup the finished status, if any/needed
        $finished = [];

        $finished[] = new SalesStates(SalesStates::WON);
        $finished[] = new SalesStates(SalesStates::LOST);

        $this->finishedStatus = $finished;
    }
}

现在可以使用此工作流程来管理应用程序的状态转换。

许可证

本软件根据MIT许可证授权。

版本控制

本项目遵循语义版本控制

感谢

所有PHP社区