🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# tp5.1笔记 >[info] 实践记录 1. 用facade替换类实例化操作,代码简洁、清淅易于维护 2. app()统一操作,代码清淅简洁 3. 数据处理统一定义于model中,比如数据缓存,数据转换,拼接 4. 日志可利用注入、行为、控制器前后置操作来执行记录方法 5. 定义DS简化代码 `define('DS', DIRECTORY\_SEPARATOR)` 6. 善用定义命令行console减少重复工作 7. 前端组件集成,可参照fastadmin,dolphinPHP中的集成方法,可提高开发效率, 8. >[info] 使用方法,可通过 thinkphp\helper.php 自带助手函数,学习内置类调用方法 9. 善用traits减少重复代码 10. 控制器: 前置操作,方便临时增加的处理过程; 当然中间插件也是不错的选择 11. 模型:数据转换,缓存.....与数据相关的,统一放于模型之中 12. # 加载与配置 ~~~ use think\facace\Load; use think\facace\Config include app('env')\->get('app\_path').'chsys'.DIRECTORY\_SEPARATOR.'common.php'; ~~~ * 只在部分控制器添加特定配置 ~~~ ..... class Index extends Admin { //初始化 左菜单 public function _initialize(){ parent::_initialize(); \think\facade\Config::set('my',....); } initialize ~~~ # 控制器 Route,Controller \think\facace\Route; \think\Controller; * 只在部分控制器中,加启用配置或者添加路由方法 >[info] 可通过行为【tags.php]添加 或者 intiallize()中动态加载 ~~~ class Linktest extends Admin { //初始化 左菜单 public function _initialize(){ parent::_initialize(); Route:: // dump((new CustomerM)->quickAdd()); } ~~~ # 数据处理 Db,Model ---- ~~~ \think\Db; \think\Model; hasOne('关联模型名','外键名','主键名',['模型别名定义'],'join类型'); ~~~ ## 实用数据查询方法 * 默认模型返回为数据集格式数据 转换为数组方法 用函数( `collection()` ) ~~~ collection(CustomerM::group('name')->field('id,name')->select())->toArray(); ~~~ * 单条记录返回数据方法 ~~~ CustomerM::find(1)->toArray(); CustomerM::find(1)->toArray(); ~~~ * 获取指定字段所有数据方法 ~~~ CustomerM::where('name','like','%name%')->column('id,name'); //返回格式为 [ '$id'=>"$name", '$id'=>"$name" ]; ~~~ * 返回指定字段的值 【单条记录】 ~~~ CustomerM::where('id',5)->value('name'); //或者 CustomerM::where('id',5)->getFieldName(); ~~~ # 验证 * 内置支持验证规则 ~~~~ // 验证规则默认提示信息 protected static $typeMsg = [ 'require' => ':attribute不能为空', 'number' => ':attribute必须是数字', 'integer' => ':attribute必须是整数', 'float' => ':attribute必须是浮点数', 'boolean' => ':attribute必须是布尔值', 'email' => ':attribute格式不符', 'array' => ':attribute必须是数组', 'accepted' => ':attribute必须是yes、on或者1', 'date' => ':attribute格式不符合', 'file' => ':attribute不是有效的上传文件', 'image' => ':attribute不是有效的图像文件', 'alpha' => ':attribute只能是字母', 'alphaNum' => ':attribute只能是字母和数字', 'alphaDash' => ':attribute只能是字母、数字和下划线_及破折号-', 'activeUrl' => ':attribute不是有效的域名或者IP', 'chs' => ':attribute只能是汉字', 'chsAlpha' => ':attribute只能是汉字、字母', 'chsAlphaNum' => ':attribute只能是汉字、字母和数字', 'chsDash' => ':attribute只能是汉字、字母、数字和下划线_及破折号-', 'url' => ':attribute不是有效的URL地址', 'ip' => ':attribute不是有效的IP地址', 'dateFormat' => ':attribute必须使用日期格式 :rule', 'in' => ':attribute必须在 :rule 范围内', 'notIn' => ':attribute不能在 :rule 范围内', 'between' => ':attribute只能在 :1 - :2 之间', 'notBetween' => ':attribute不能在 :1 - :2 之间', 'length' => ':attribute长度不符合要求 :rule', 'max' => ':attribute长度不能超过 :rule', 'min' => ':attribute长度不能小于 :rule', 'after' => ':attribute日期不能小于 :rule', 'before' => ':attribute日期不能超过 :rule', 'expire' => '不在有效期内 :rule', 'allowIp' => '不允许的IP访问', 'denyIp' => '禁止的IP访问', 'confirm' => ':attribute和确认字段:2不一致', 'different' => ':attribute和比较字段:2不能相同', 'egt' => ':attribute必须大于等于 :rule', 'gt' => ':attribute必须大于 :rule', 'elt' => ':attribute必须小于等于 :rule', 'lt' => ':attribute必须小于 :rule', 'eq' => ':attribute必须等于 :rule', 'unique' => ':attribute已存在', 'regex' => ':attribute不符合指定规则', 'method' => '无效的请求类型', 'token' => '令牌数据无效', 'fileSize' => '上传文件大小不符', 'fileExt' => '上传文件后缀不符', 'fileMime' => '上传文件类型不符', ]; ~~~~