码迷,mamicode.com
首页 > 其他好文 > 详细

开启事务/结束事务

时间:2019-03-18 16:56:42      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:als   默认   while   ram   llb   turn   fun   信息   tar   

    /**
     * 开启事务
     * 
     * @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
        ];
    }

 

开启事务/结束事务

标签:als   默认   while   ram   llb   turn   fun   信息   tar   

原文地址:https://www.cnblogs.com/ningjiabing/p/10552873.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!