gpt4 book ai didi

php - PHP 中的用户状态工作流引擎

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:48:33 26 4
gpt4 key购买 nike

我希望在 PHP 应用程序中实现用户状态/工作流处理。

目前有:

  • 一个基于用户的系统,具有大约 10 种不同的状态,任何用户都可以处于(启用、禁用、预注册、取消注册、删除等)
  • 根据不同的系统事件定义用户可以从哪个状态进入哪个状态的规则
  • 一个相当困惑(但主要是工作)的系统,充满了散布在各处的 IF 和 SWITCH

想要:

  • 用允许定义那些用户转换规则的“智能”状态机替换当前的 IFfy 用户状态处理
  • 允许可视化那些已定义的规则
  • 通过确保用户只能处于合法状态,使系统更加安全和防弹

我的研究:

我检查了 SO 和其他地方的工作流和状态机的 PHP 实现,有前途的候选人似乎是

对于使用上述任一库的任何经验的任何评论和/或关于是否适合我需要的意见或对其他地方的提示,我将不胜感激。

最佳答案

根据您的状态设置方式,听起来您可以设置一个带有工厂的类系统来优雅地处理所有这些?

您还可以为您的类设置状态检查,这样您可以抛出异常并且基本上无法实例化该类(因此无法进入该状态)。

我想这样的事情可能对你有用:

class StateFactory {
$currentState;

function __construct(){
if(!isset($_SESSION['currentState'])){
$this->currentState = 'StateOne';
}
else{
$this->currentState = $_SESSION['currentState'];
}

$this->currentState = new {$this->currentState}->processState(); // I think something like this will work
}

function __deconstruct(){
$_SESSION['currentState'] = $this->currentState;
}
}

abstract class State{
abstract function processState();
}

class StateOne extends State{
function processState(){
if(<check what is needed for this state>){
<do what you need to do for this state>
return 'StateTwo';
}
else
{
return 'StateWhatever';
}
}
}

class StateTwo extends State{
function processState(){
if(<check what is needed for this state>){
<do what you need to do for this state>
return 'StateThree';
}
else
{
return 'StateWhatever';
}
}
}

class StateThree extends State{
...
}

显然,这里缺少很多东西,需要做很多工作才能使它成为您实际可以使用的东西,但是如果您像这样拆分东西,它就不会那么困惑,您将能够了解检查每个状态的位置以及检查的内容。

关于php - PHP 中的用户状态工作流引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7650269/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com