class Order
{
public function chain($a, $b, $c, $d, $e)
{
$r = $this->A($a, function () use ($b, $c, $d, $e) {
$r = $this->B($b, function () use ($c, $d, $e) {
$r = $this->C($c, function () use ($d, $e) {
$r = $this->D($d, function () use ($e) {
$r = $this->E($e, function () {});
if (!$r) {
//回滚D
return false;
}
return true;
});
if (!$r) {
//回滚C
return false;
}
return true;
});
if (!$r) {
//回滚B
return false;
}
return true;
});
if (!$r) {
//回滚A
return false;
}
return true;
});
if (!$r) {
return false;
}
return true;
}
public function A($a, $callback) {
$r = false;
//调用服务 $r = A::do($a);
if(!$r) {
return false;
}
return $callback;
}
public function B($b, $callback) {
$r = false;
//调用服务 $r = B::do($b);
if(!$r) {
return false;
}
return $callback;
}
public function C($c, $callback) {
$r = false;
//调用服务 $r = C::do($c);
if(!$r) {
return false;
}
return $callback;
}
public function D($d, $callback) {
$r = false;
//调用服务 $r = D::do($d);
if(!$r) {
return false;
}
return $callback;
}
public function E($e, $callback) {
$r = false;
//调用服务 $r = E::do($e);
if(!$r) {
return false;
}
return $callback;
}
}