0
某處在我__call
魔術方法我調用transactional
,接受Closure
:在php中返回Closure的結果?
try {
$that = $this
$this->conn->transactional(function ($conn) use ($that, $realMethod) {
$result = call_user_func([$that, $realMethod], $conn);
$this->conn->exec('SET foreign_key_checks = 1');
});
} catch (\Exception $e) {
$this->conn->exec('SET foreign_key_checks = 1');
throw $e;
}
有沒有辦法從返回$result
瓶蓋內(或使用通過引用傳遞,等等)?
方法$conn->transactional
是不是我的控制之下:
public function transactional(Closure $func)
{
$this->beginTransaction();
try {
$func($this);
$this->commit();
} catch (Exception $e) {
$this->rollback();
throw $e;
}
}
發佈問題後馬上找出來。由於一些奇怪的原因,PHPStorm給了我一個錯誤,讓我覺得這是不可能的。謝謝!!! – gremo