pharaoh_shi 2017-06-21 13:20 采纳率: 50%
浏览 781

想请教一下代码规范问题,望指教~

这是一个购物车的模块,在写的时候感觉判断所有情况太繁琐, 所以想请教一下。

  /**
     * 购物车添加商品
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
            // 商品 ID
        $ware_id = request()->input('ware_id', 0);
                // 商品数量
        $ware_num = request()->input('ware_num', 0);

        // 定义错误消息
        $msg = [
            'errno' => 0,
            'errmsg' => ''
        ];

        try
        {
            $user = User::where('user', session('user'))->first();

            // 先查找购物车是否已有记录
            try
            {
                $data = [
                    'ware_id' => $ware_id,
                    'ware_num' => $ware_num,
                    'user_id' => $user->id
                ];

                $car = Car::where('user_id', $user->id)->where('ware_id', $ware_id)->where('status', 1)->first();
                // 已经存在了商品 只要加num
                if ($car)
                {
                    $car->ware_num += $ware_num;
                    $res = $car->save();
                    if ($res)
                    {
                        $msg['errmsg'] = '添加商品成功!';
                    }
                    else
                    {
                        $msg['errno'] = 1;
                        $msg['errmsg'] = '添加商品失败';
                    }
                }
                else
                {
                    try
                    {
                        $res = Car::create($data);
                        if ($res)
                        {
                            $msg['errmsg'] = '添加商品数量成功!';
                        }
                        else
                        {
                            $msg['errno'] = 2;
                            $msg['errmsg'] = '添加商品数量失败';
                        }
                    }
                    catch(QueryException $e)
                    {
                        $msg['errno'] = 3;
                        $msg['errmsg'] = '添加购物车失败, 失败原因:' . $e->getMessage();
                    }

                }
            }
            catch(QueryException $e)
            {
                $msg['errno'] = 5;
                $msg['errmsg'] = '添加购物车失败, 失败原因:' . $e->getMessage();
            }

        }
        catch(QueryException $e)
        {
            $msg['errno'] = 4;
            $msg['errmsg'] = '添加购物车失败, 失败原因:' . $e->getMessage();
        }



        return $msg;
    }




// 第二种写法:

 /**
     * 购物车添加商品
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
            // 商品 ID
        $ware_id = request()->input('ware_id', 0);
                // 商品数量
        $ware_num = request()->input('ware_num', 0);

        // 定义错误消息
        $msg = [
            'errno' => 0,
            'errmsg' => ''
        ];

        // user
        $user = User::where('user', session('user'))->first();

        // 先查找购物车是否已有记录
        $data = [
            'ware_id' => $ware_id,
            'ware_num' => $ware_num,
            'user_id' => $user->id
        ];

        $car = Car::where('user_id', $user->id)->where('ware_id', $ware_id)->where('status', 1)->first();
        // 不存在了商品 只要加num
        if (!$car)
        {
            $res = Car::create($data);
            if ($res)
            {
                $msg['errmsg'] = '添加商品数量成功!';
            }
            else
            {
                $msg['errno'] = 2;
                $msg['errmsg'] = '添加商品数量失败';
            }

        }


        return $msg;
    }




**我想问的是, 到底有没有必要在每一个情况的 if 和 try? 像**


 $user = User::where('user', session('user'))->first();

还用不用判断 $user 是否为 null,因为已经有中间件判断是否登录, 是否还要在这里判断? 请教~~~

  • 写回答

2条回答 默认 最新

  • pharaoh_shi 2017-06-21 13:37
    关注

    好像吐槽一下 CSDN 的插入代码功能。

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog