为了实现我的一些功能,我需要按顺序调用一组API。有时候中间的一个API会失败。在这种情况下,我需要回滚在此之前已成功发生的API调用。本质上是一个具有事务回滚支持的命令/功能队列。
还有时我需要将其中一个函数调用的结果作为参数注入到以后的函数调用中。如果有一个协议就好了。
如果有人遇到过这样的(php)库,或者有一种优雅的方式来实现这一点,我想知道一个状态机吗?或者我说的只是胡言乱语!!
显然,需要考虑很多细微差别,比如如果回滚失败等情况会发生什么。
我想将此库称为如下:
// First Command
$cmd1 =
new \Transaction\Command("Command One")
->setFunction(
function () {
echo "Running Command One";
return "One";
}
)
->setRollback(
function () {
return "Rolled Back Command One";
}
);
// Second Command
$cmd2 =
new \Transaction\Command("Command Two")
->setFunction(
function ($resultFromCmdOne) {
echo "Running Command Two with".
" result from command one: $resultFromCmdOne";
return "Two";
}
)
->setRollback(
function () {
return "Rolled Back Command Two";
}
);
$cmdQueue = new \Native5\Transaction\CommandQueue();
$cmdQueue->addCommand($cmd1);
$cmdQueue->addCommand($cmd2);
// Process the set of commands
$cmdQueue->process();