mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-07 15:12:48 +08:00
Loader类的import方法调整 Model类自动验证和自动完成改进callback类型
This commit is contained in:
@@ -211,13 +211,13 @@ class Loader
|
|||||||
} elseif ('@' == $name || MODULE_NAME == $name) {
|
} elseif ('@' == $name || MODULE_NAME == $name) {
|
||||||
//加载当前模块应用类库
|
//加载当前模块应用类库
|
||||||
$baseUrl = MODULE_PATH;
|
$baseUrl = MODULE_PATH;
|
||||||
} elseif (in_array($name, ['traits', 'think', 'behavior']) || is_dir(LIB_PATH . $name)) {
|
} elseif (in_array($name, ['traits', 'think', 'behavior'])) {
|
||||||
$baseUrl = LIB_PATH;
|
$baseUrl = LIB_PATH;
|
||||||
} elseif (is_dir(EXTEND_PATH . $name)) {
|
|
||||||
$baseUrl = EXTEND_PATH;
|
|
||||||
} elseif (APP_NAMESPACE == $name) {
|
} elseif (APP_NAMESPACE == $name) {
|
||||||
// 项目命名空间
|
// 项目命名空间
|
||||||
$baseUrl = APP_PATH;
|
$baseUrl = APP_PATH;
|
||||||
|
} elseif (is_dir(EXTEND_PATH . $name)) {
|
||||||
|
$baseUrl = EXTEND_PATH;
|
||||||
} else {
|
} else {
|
||||||
// 加载其他模块应用类库
|
// 加载其他模块应用类库
|
||||||
$baseUrl = APP_PATH . $name . DS;
|
$baseUrl = APP_PATH . $name . DS;
|
||||||
|
|||||||
@@ -1068,12 +1068,19 @@ class Model
|
|||||||
} else {
|
} else {
|
||||||
$rule = isset($val[0]) ? $val[0] : $val;
|
$rule = isset($val[0]) ? $val[0] : $val;
|
||||||
$type = isset($val[1]) ? $val[1] : 'value';
|
$type = isset($val[1]) ? $val[1] : 'value';
|
||||||
|
if ($rule instanceof \Closure) {
|
||||||
|
$type = 'callback';
|
||||||
|
}
|
||||||
switch ($type) {
|
switch ($type) {
|
||||||
case 'behavior':
|
case 'behavior':
|
||||||
Hook::exec($rule, '', $data);
|
Hook::exec($rule, '', $data);
|
||||||
break;
|
break;
|
||||||
case 'callback':
|
case 'callback':
|
||||||
$data[$key] = call_user_func_array($rule, [$value, &$data]);
|
if (is_array($rule) || (is_string($rule) && strpos($rule, '::'))) {
|
||||||
|
$data[$key] = App::invokeMethod($rule, [$value, &$data]);
|
||||||
|
} else {
|
||||||
|
$data[$key] = App::invokeFunction($rule, [$value, &$data]);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 'ignore':
|
case 'ignore':
|
||||||
if ($rule === $value) {
|
if ($rule === $value) {
|
||||||
@@ -1103,9 +1110,16 @@ class Model
|
|||||||
$msg = isset($val[1]) ? $val[1] : 'data validate error : [ ' . $key . ' ]';
|
$msg = isset($val[1]) ? $val[1] : 'data validate error : [ ' . $key . ' ]';
|
||||||
$type = isset($val[2]) ? $val[2] : 'regex';
|
$type = isset($val[2]) ? $val[2] : 'regex';
|
||||||
$options = isset($val[3]) ? $val[3] : [];
|
$options = isset($val[3]) ? $val[3] : [];
|
||||||
|
if ($rule instanceof \Closure) {
|
||||||
|
$type = 'callback';
|
||||||
|
}
|
||||||
switch ($type) {
|
switch ($type) {
|
||||||
case 'callback':
|
case 'callback':
|
||||||
$result = call_user_func_array($rule, [$value, &$data]);
|
if (is_array($rule) || (is_string($rule) && strpos($rule, '::'))) {
|
||||||
|
$result = App::invokeMethod($rule, [$value, &$data]);
|
||||||
|
} else {
|
||||||
|
$result = App::invokeFunction($rule, [$value, &$data]);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 'behavior':
|
case 'behavior':
|
||||||
// 行为验证
|
// 行为验证
|
||||||
|
|||||||
Reference in New Issue
Block a user