zoukankan      html  css  js  c++  java
  • 开启事务/结束事务

        /**
         * 开启事务
         * 
         * @param function $callback 可选, 事务之内的业务逻辑, 抛出异常回滚或成功时返回消息
         * @return bool/exception/string 未设置参数时返回true, 出错时返回ThinkException异常对象, 成功时返回提示消息
         */
        public static function start($callback = null) {
            D()->startTrans();
    
            if ($callback && is_callable($callback)) {
                try {
                    return $callback();
                } catch (ThinkException $e) {
                    return $e;
                }
            }
    
            return true;
        }
    
        /**
         * 结束事务
         * 
         * @param string/object $msg 可选, 成功时为消息, 出错时为异常对象
         * @param boolean $success 可选, 是否提交事务, 默认true, 设置为false则执行回滚
         * @return bool/exception/string 未设置参数时返回true, 出错时返回ThinkException异常对象, 成功时返回提示消息
         */
        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
            ];
        }
  • 相关阅读:
    计时器C#
    MySQL Database Command Line Client
    C#小爬虫,通过URL进行模拟发送接收数据
    C#导入导出Excele数据
    正则表达式动态分隔符
    C#中的枚举
    C#中的ToString格式大全
    C# 序列化与反序列化
    C# 对xml进行操作
    时间标签DateTime
  • 原文地址:https://www.cnblogs.com/ningjiabing/p/10552873.html
Copyright © 2011-2022 走看看