美文网首页
匿名函数的初步使用

匿名函数的初步使用

作者: 禾线子 | 来源:发表于2017-06-15 09:34 被阅读0次

最近在写接口,很多方法都具有相同的部分,比如最开始的输入检查,过程中的异常捕捉,结果的格式输出。这样每个方法都有很多重复的代码,不符合DRY(Do not Repeat Yourself),首先写的不开心,然后不方便管理,容易出错。想着有什么好的办法可以将这些东西改写一下。于是想到了下面这种解决办法。

public function predictEdit(Request $request)
    {
        $result    =  GeneralService::cloak($request,[
            'predict'  => 'required|integer',
            'title'    => 'required|max:200',
            // 更多验证规则
        ], function()use($request){
            $predict_id  =  $request->get('predict');
            $title       =  $request->get('title');
            $predict     =  PlanePredict::find($predict_id);
            $user_id     =  $request->get('user_id');
            if (!$predict) {
                throw new \Exception('predict not found', '2020');
            }
            $update_data =  [
                'title'        => $title,
                // 更多更新数据
            ];
            $log_data    =  [
                'user_id'      => $user_id,
                'created_at'   => date('Y-m-d H:i:s')
                // 更多日志信息
            ];
            $result      =  DB::transaction(function()use($predict, $update_data, $log_data){
                $result  =  $predict->update($update_data);
                Log::create($log_data);
                return $result;
            });
        });
        return $result;
    }
    public static function cloak($request, $validation, $func)
    {
        try {
            $validator        =  Validator::make($request->all(), $validation);
            if ($validator->fails()) {
                info("\n"."------------------------------"."\n");
                info($validator->errors());
                info("\n"."------------------------------"."\n");
                throw new \Exception("invalid input", "2020");
            }
            $result    =  $func();
            return Response::json([
                'header'    => [
                    'status'    => '1000',
                    'message'   => 'success'
                ],
                'data'      => $result
            ]);
        } catch (\Exception $e) {
            info(__METHOD__."\n".$e->getTraceAsString());
            info("\n"."------------------------------"."\n");
            info($e->getCode()." | ".$e->getMessage());
            return Response::json([
                'header'    => [
                    'status'    => $e->getCode(),
                    'message'   => $e->getMessage()
                ],
                'data'      => null
            ]);
        }
    }

相关文章

  • 匿名函数的初步使用

    最近在写接口,很多方法都具有相同的部分,比如最开始的输入检查,过程中的异常捕捉,结果的格式输出。这样每个方法都有很...

  • go 匿名函数

    Go支持匿名函数,如果我们某个函数只是希望使用一次,可以考虑使用匿名函数,匿名函数也可以实现多次调用1、匿名函数使...

  • 函数 -- 特殊函数

    匿名函数 python 使用 lambda 来创建匿名函数。所谓匿名,即不再使用 def 语句这样标准的形式定义一...

  • Python3 lambda用法

    匿名函数 Python使用lambda来创建匿名函数所谓匿名,意即不再使用def这样标准的形式定义一个函数 lam...

  • JavaScript匿名函数_函数自我执行(十七)

    目录: 1.什么是匿名函数 2.匿名函数的使用 一、什么是匿名函数 匿名函数,顾名思义,就是没有名字的函数。 二、...

  • python学习_day10

    匿名函数和递归函数的使用

  • 9.js基础--函数重要概念

    1.匿名函数 定义函数时,不使用任何变量引用的函数; 1.为何使用:使用匿名函数,可以节省内存空间,使用完毕以后立...

  • python 学习笔记 019

    上节课:函数控制 匿名函数 概念:不使用def这样的语句定义函数,使用lambda来创建匿名函数 特点: 1、la...

  • 13.Python编程:lambda表达式(匿名函数)

    前面学习了Python中的函数,本文学习一下匿名函数。Python 使用 lambda 来创建匿名函数。所谓匿名,...

  • Dart匿名函数+泛型

    匿名函数使用 无参数的匿名函数 带参数的匿名函数 函数体只有一行时,简写 泛型的基本使用 泛型集合 泛型类 泛型方法

网友评论

      本文标题:匿名函数的初步使用

      本文链接:https://www.haomeiwen.com/subject/nvdyqxtx.html