/** * 开启事务 * * @param function $callback 可选, 事务之内的业务逻辑, 抛出异常回滚或成功时返回消息 * @return bool/exception/string 未设置参数时返回true, 出错时返回\Think\Exception异常对象, 成功时返回提示消息 */ public static function start($callback = null) { D()->startTrans(); if ($callback && is_callable($callback)) { try { return $callback(); } catch (\Think\Exception $e) { return $e; } } return true; } /** * 结束事务 * * @param string/object $msg 可选, 成功时为消息, 出错时为异常对象 * @param boolean $success 可选, 是否提交事务, 默认true, 设置为false则执行回滚 * @return bool/exception/string 未设置参数时返回true, 出错时返回\Think\Exception异常对象, 成功时返回提示消息 */ public static function end($msg = ‘‘, $success = true) { // 如果$msg传递为异常类 则抛出错误信息 if (is_object($msg)) { $obj = new \ReflectionClass($msg); do { if ($obj->name == ‘Exception‘) { $success = false; $msg = $msg->getMessage(); break; } } while ($obj = $obj->getParentClass()); } if ($success) { D()->commit(); } else { D()->rollback(); } $action = $success ? ‘success‘ : ‘error‘; return [ ‘status‘ => $action, ‘msg‘ => $msg ]; }
原文地址:https://www.cnblogs.com/ningjiabing/p/10552873.html
时间: 2024-10-10 15:58:56