gpt4 book ai didi

php - USSD(状态机)应用算法

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

我在 PHP 中创建了一个 USSD 应用程序,因为 USSD 请求是唯一的(每个选择的新请求)我需要一种方法来跟踪它们,在我需要一种方法来存储应用程序流的意义上进行跟踪,在我的USSD 应用程序有静态菜单和动态菜单(从数据库中检索),我的问题是,我创建的应用程序有很多 if、else 和 switch 语句,而且更新菜单项真的很困难。那么谁能建议我一个好的算法来创建这个 USSD 应用程序?我的意思是解决问题的有效方法,我需要一种能够根据客户请求添加和删除菜单的方法,当我这样做时,我的代码不应该中断。谁能帮我解决这个问题?

-感谢和问候

PS:我已经阅读了thisthis它实际上并没有回答我的问题。

最佳答案

使用 USSD 的最佳方法是使每个 command 成为一个单独的类。通过这种方式,您可以工作、调试和维护大型 USSD 应用程序

示例

$ussd = new USSDMessage(); // USSD Class 

$main = new Command("menu"); // Starting Command

// Register multiple command
$main->register(new Command("help"));
$main->register(new Command("account"));
$main->register(new Command("transfer"));
$main->register( new Recharge("reacharge"));

$main->run($ussd); // Run Request

基本类结构

// Class To receve message from USSD
class USSDMessage {
function next();
function saveSession();
}

// Basic Command Class
class Command {
private $name;
private $cmd = array();

function __construct($name) {
$this->name = $name;
}

function register(Command $menu) {
$this->cmd[$menu->getName] = $menu;
}

function run(USSDMessage $ussd) {
$key = $ussd->next(); // get next inpur from ussd

if (isset($this->cmd[$key])){
$ussd->run($ussd);
}
}
}

// Recharge Command Example
class Recharge extends Command {

function run(USSDMessage $ussd) {
$key = $ussd->next();

switch ($key){
case "1":
// Proccess card recharge
// Do Somthing
$ussd->saveSession(); // End Session
break;
case "2":
// Process direct deposit
// Do Somthing
$ussd->saveSession(); // End Session
break;
default:
// Format Not supported
// Do Somthing
$ussd->saveSession(); // End Session
break;
}
}
}

关于php - USSD(状态机)应用算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20726630/

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