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