# 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' => '上传文件类型不符',
];
~~~~
- 文档说明
- 5.1对比5.0.X版本需要注意点
- 待解答问题QA
- THINKPHP基础
- 常用技巧
- tp5.1系统信息
- 容器、Facade、依赖注入
- 其它要点记录
- 数据库与模型
- 数据集
- AQ问题集
- API开发
- restful开发
- restful测试之ZClient开发
- api开发
- 缓存
- 组件开发
- 采集组件ZSnoopy
- restful测试组件ZClient
- thinkphp各功能模块
- thinkphp-Log
- 队列thinkphp-Queue
- THINKPHP扩展
- 单元测试
- 类库库迁移工具Migration
- 命令行
- 关于console扩展要点
- 附录
- 第三方实用PHP库
- 实用IP库
- phpQuery库
- Guzzle库
- Markdown解释库Parsedown
- 上线的项目debug组件
- nette/utils实用函数库
- 推荐框架DolphinPHP
- Thinkphp之widget
- 表单组件form
- 前端框架推荐
- 推荐框架fastadmin
- PHP7最新语法
- 前端框架
- Echart
- mysql触发器
- PHP实用技巧与函数
- composer实用笔记