【PHP】ThinkPHP5.1开发技巧

小破孩
2022-06-19 / 0 评论 / 188 阅读 / 正在检测是否收录...
  • 用facade替换类实例化操作,代码简洁、清淅易于维护
  • app()统一操作,代码清淅简洁
  • 数据处理统一定义于model中,比如数据缓存,数据转换,拼接
  • 日志可利用注入、行为、控制器前后置操作来执行记录方法
  • 定义DS简化代码 define('DS', DIRECTORY\_SEPARATOR)
  • 善用定义命令行console减少重复工作
  • 前端组件集成,可参照fastadmin,dolphinPHP中的集成方法,可提高开发效率,
  • 使用方法,可通过 thinkphp\helper.php 自带助手函数,学习内置类调用方法
  • 善用traits减少重复代码
  • 控制器: 前置操作,方便临时增加的处理过程; 当然中间插件也是不错的选择
  • 模型:数据转换,缓存.....与数据相关的,统一放于模型之中

加载与配置

    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;
  • 只在部分控制器中,加启用配置或者添加路由方法
可通过行为【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'    => '上传文件类型不符',
    
    ];
0

评论 (0)

取消