From 32d5b28423d75556dd1dbe5e5abf0b67437a59d0 Mon Sep 17 00:00:00 2001 From: hailaz <739476267@qq.com> Date: Sat, 13 Jul 2019 10:48:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=88=E8=BF=98=E5=8E=9F=E5=AF=B9gvalid.Chec?= =?UTF-8?q?k()=E7=9A=84=E4=BF=AE=E6=94=B9=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- g/util/gvalid/gvalid_check.go | 54 ++--------------------------------- 1 file changed, 2 insertions(+), 52 deletions(-) diff --git a/g/util/gvalid/gvalid_check.go b/g/util/gvalid/gvalid_check.go index 70d500f24..fc837ec44 100644 --- a/g/util/gvalid/gvalid_check.go +++ b/g/util/gvalid/gvalid_check.go @@ -7,7 +7,6 @@ package gvalid import ( - "reflect" "regexp" "strconv" "strings" @@ -18,7 +17,6 @@ import ( "github.com/gogf/gf/g/net/gipv6" "github.com/gogf/gf/g/os/gtime" "github.com/gogf/gf/g/text/gregex" - "github.com/gogf/gf/g/text/gstr" "github.com/gogf/gf/g/util/gconv" ) @@ -107,55 +105,7 @@ var ( } ) -// 检测单条数据 -// value数据类型可以为map、array、slice以及其它基本数据类型 -func Check(value interface{}, rules string, msgs interface{}, params ...interface{}) *Error { - - rv := reflect.ValueOf(value) - switch rv.Kind() { - case reflect.Array, reflect.Slice: // Array/Slice 遍历调用 - for i := 0; i < rv.Len(); i++ { - err := Check(rv.Index(i).Interface(), rules, msgs, params...) - if err != nil { - return err - } - } - return nil - case reflect.Map: // Map 遍历调用 - iter := rv.MapRange() - for iter.Next() { - err := Check(iter.Value().Interface(), rules, msgs, params...) - if err != nil { - return err - } - } - return nil - case reflect.Ptr: // Ptr - rv := rv.Elem() - array := make([]interface{}, 0) - switch rv.Kind() { - case reflect.Slice, reflect.Array: - for i := 0; i < rv.Len(); i++ { - array = append(array, rv.Index(i).Interface()) - } - return Check(array, rules, msgs, params...) - case reflect.Struct: - rt := rv.Type() - for i := 0; i < rv.NumField(); i++ { - // Only public attributes. - if !gstr.IsLetterUpper(rt.Field(i).Name[0]) { - continue - } - array = append(array, rv.Field(i).Interface()) - } - return Check(array, rules, msgs, params...) - } - return nil - } - - return doCheckSingleRule(value, rules, msgs, params...) -} - +// 检测单条数据的规则: // 基本数据类型校验 // // 1. value为需要校验的数据,可以为任意基本数据类型; @@ -164,7 +114,7 @@ func Check(value interface{}, rules string, msgs interface{}, params ...interfac // 允许传递多个自定义的错误信息,如果类型为string,那么中间使用"|"符号分隔多个自定义错误; // // 3. params参数为联合校验参数,支持任意的map/struct/*struct类型,对于需要联合校验的规则有效,如:required-*、same、different; -func doCheckSingleRule(value interface{}, rules string, msgs interface{}, params ...interface{}) *Error { +func Check(value interface{}, rules string, msgs interface{}, params ...interface{}) *Error { // 内部会将参数全部转换为字符串类型进行校验 val := strings.TrimSpace(gconv.String(value)) data := make(map[string]string)