概述
Z-PHP框架通过DB_NAME.base.php
配置数据库的字段数据验证方法,数据库操作成功后的回调方法.
文件存放位置:
COMMON/base/DB_NAME.base.php(/common/目录下)
APP/common/base/DB_NAME.base.php(app的版本目录下)
// APP覆盖COMMON
文件结构
<?php
return[
'TB_NAME'=>[
'prikey'=>'id',//主键字段名
'columns'=>['id','uid','regtime','status'],//表的字段名
'valid'=>[],//字段数据验证规则
'call'=>[] //数据库操作成功后的回调方法
]
]
valid 数组
-
valid的结构
[
'!'=>2, //验证模式
'COLUMN_NAME'=>[
'when'=>'both|insert|update' //何时验证
'must'=>null|true, //是否继续验证
'notnull'=>'账号不能空',
'unique'=>'数据已存在',
'length'=>['value'=>[6,16],'msg'=>'长度不合法'],
'preg'=>['value'=>'/^1[3578]\d{9}$/','msg'=>'手机不合法'],
'number'=>'不是数字',
'ip'=>'ip不合法',
'url'=>'网址不合法',
'email'=>'邮箱地址不合法',
'phone'=>'手机号码不合法',
'int'=>['value'=>[1,16],'msg'=>'整型不符合范围'],
'filter'=>['value'=>'FILETER_VALID','msg'=>'数据不合法'],
function($val,$data,$where){ //ANONYMOUS_fUNCTION
return $val === 1 ? 0 : '错误提示';
//通过返回0,错误返回文字信息
}
],
...
]
- valid键名说明
键名 |
值类型 |
默认 |
取值/说明 |
! |
int |
1 |
1 :某一个条件不满足时就返回,<br>2 :某一个字段不满足时返回,<br>null 或'' 或其它:验证完全部字段后返回 |
COLUMN_NAME |
array |
[] |
字段验证规则,格式详见下表 |
call |
array |
[] |
数据库操作后执行的回调函数,格式详见下表 |
键名(方法名) |
值类型 |
候选值 |
说明 |
when |
string |
'both','insert','update' |
何时验证 无默认值 |
must |
null,boolean |
null,true |
必须验证? |
notnull |
errmsg |
any |
不能为空 |
unique |
errmsg |
any |
唯一,值在表中是否已存在 |
number |
errmsg |
any |
数字 |
ip |
errmsg |
any |
ip |
url |
errmsg |
any |
网址 |
email |
errmsg |
any |
邮箱地址 |
phone |
errmsg |
any |
手机号码 |
preg |
array |
[<br>'value'=>'/^8\d{7}$/',<br>'msg'=>'msg'<br>] |
正则验证 |
length |
array |
[<br>'value'=>6,<br>'msg'=>'msg'<br>] <br>OR<br> [<br>'value'=>[6,16],<br>'msg'=>'msg'<br>] |
长度不大于或不超范围 |
int |
array |
[<br>'value'=>6,<br>'msg'=>'msg'<br>] <br>OR<br> [<br>'value'=>[6,16],<br>'msg'=>'msg'<br>] |
不超范围的整数,(默认最小大于0) |
filter |
array |
[FILTER过滤器名](https://www.runoob.com/php/php-ref-filter.html "过滤器名") |
PHP过滤器测试 |
ANONYMOUS |
function |
function($val,$data,$where){<br>return $val === 1 ? 0 : '错误提示';<br>} |
匿名函数验证,通过返回0,错误返回文字信息 |
call 数组
键名(方法名) |
说明 |
insert |
执行insert操作成功后执行 |
update |
执行update操作成功后执行 |
ifUpdate |
执行ifUpdate操作成功后执行 |
delete |
执行delete操作成功后执行 |
//函数格式
'update'=>function($params, $db){
if(empty($params['data']) || !$uid = $db->getWhereByKey('uid')) return false;
\lib\state\user::setInfoCache('member', $uid, $params['data']);
}
//$params参数
//$params = [
//'result' => $result,
//'where' => $this->DB_WHERE,
//'sql' => $sql,
//'bind' => $this->DB_BIND
//]
//$db参数 db实例对象