【发布时间】:2013-06-15 04:57:44
【问题描述】:
我有以下代码 sn-p,但我似乎无法让它工作。
$paymentGatewayTransaction = $this->processTransaction($data);
DB::connection('new_db')->transaction(function () use ($paymentGatewayTransaction) {
//Performing all DB transactions here to insert Order Information.
if ($paymentGatewayTransaction['Status'] == "APPROVED")
return Response::json(array('Status' => 'Success'), '200'); else
return Response::json(array('Status' => 'Error'), '200');
});
function processTransaction($data) {
//Process Gateway Transaction
if ($gatewayWasSuccessfull)
return array('Status' => 'APPROVED'); else
return array('Status' => 'DECLINED');
}
5 和 7 行上的返回 Response::json() 似乎根本没有任何效果。响应永远不会到达浏览器。
如果我将 if 条件从行 4 到 8 移到闭包函数之外,它可以正常工作。
作为一种解决方法,我最终不得不执行以下操作。
$paymentGatewayTransaction = $this->processTransaction($data);
$orderObj = "";
DB::connection('new_db')->transaction(function () use ($paymentGatewayTransaction, &$orderObj) {
//Performing all DB transactions here to insert Order Information.
// **$orderObj is set here**
});
if ($paymentGatewayTransaction['Status'] == "APPROVED")
return Response::json(array('Status' => 'Success', 'Order' => $orderObj->id), '200'); else
return Response::json(array('Status' => 'Error'), '200');
function processTransaction($data) {
//Process Gateway Transaction
if ($gatewayWasSuccessfull)
return array('Status' => 'APPROVED'); else
return array('Status' => 'DECLINED');
}
在闭包外部创建对象$orderObj,并通过引用事务将其作为变量在闭包函数外部使用。这可以更简单吗?或者这是使用它的方法吗?
【问题讨论】:
标签: php closures laravel laravel-4