thinkphp6 常用方法文档

本文阅读 4 分钟
首页 Thinkphp笔记 正文

请求变量

  1. use think\facade\Request;
  2. Request::param('name');
  3. Request::param();全部请求变量 返回数组
  4. Request::param(['name', 'email']); 多个变量
  5. Request::param('a','1') $a不存在使用默认值1
  6. Request::param('username','','strip_tags'); 参数过滤 去掉html标签 htmlspecialchars转换成实体入库 strtolower小写
  7. Request::header(); 请求头数组,支持单个 cookie
  8. input("name");
  9. Request::session();获取 $_SESSION 变量
  10. Request::cookie();获取 $_COOKIE 变量
  11. Request::server();获取 $_SERVER 变量
  12. Request::env();返回env数组
  13. Request::file();获取 $_FILES 变量
  14. Request::baseUrl(); /index/index
  15. Request::host(true); 域名:www.baidu.com,默认无参数包含端口:80
  16. Request::url(1); 完整域名和地址 http://tp6.api.shanliwawa.top:80/index/index
  17. Request::domain(1) http://tp6.api.shanliwawa.top
  18. Request::time() 请求时间戳
  19. Request::app() 应用名 index
  20. Request::controller() 控制器 Index 参数true小写
  21. Request::action() 操作 index 参数true 小写
  22. Request::method(true); 请求类型获取 GET
  23. isGet isPost isPut isDelete isAjax isMobile isHead 判断是否某种类型
  24. Request::has('id','get'); 检测变量id是否存在
  25. url('index/hello', ['id'=>5,'name'=>'李白'],'do'); http://tp6.api.shanliwawa.top/index/hello/李白.do?id=5
  26. url('index/hello#aa'); 锚点
  27. Cache::set('name', $value, 3600); 1小时后过期
  28. Cache::get('name'); 获取缓存
  29. 多缓存类型配置
  30. return [
  31. // 缓存类型为File
  32. 'type' => 'redis',
  33. // 全局缓存有效期(0为永久有效)
  34. ,开发下一定要设置-1 否在刷新后 还在
  35. 'expire'=> -1,
  36. // 缓存前缀
  37. 'prefix'=> 'think',
  38. // 缓存目录
  39. 'host' => '127.0.0.1',
  40. ];
  41. return [
  42. // 使用复合缓存类型
  43. 'type' => 'complex',
  44. // 默认使用的缓存
  45. 'default' => [
  46. // 驱动方式
  47. 'type' => 'file',
  48. // 缓存保存目录
  49. 'path' => '../runtime/default',
  50. ],
  51. // 文件缓存
  52. 'file' => [
  53. // 驱动方式
  54. 'type' => 'file',
  55. // 设置不同的缓存保存目录
  56. 'path' => '../runtime/file/',
  57. ],
  58. // redis缓存
  59. 'redis' => [
  60. // 驱动方式
  61. 'type' => 'redis',
  62. // 服务器地址
  63. 'host' => '127.0.0.1',
  64. ],
  65. ];
  66. use think\facade\Cache;
  67. Cache::store('file')->set('name','123',0);
  68. $v = Cache::store('redis')->get('name');
  69. Cache::store('default')->get('name');文件缓存
  70. Cache::delete('name');
  71. Cache::clear();
  72. Cache::set('name', [1,2,3]);
  73. Cache::push('name', 4);
  74. Cache::remember('start_time', time()); 不存在则创建
  75. Cache::inc('name',1); 自增1
  76. Cache::dec('name',1); 自减1
  77. $redis = Cache::handler(); redis对象
  78. 配置redis session
  79. return [
  80. 'type' => 'redis',
  81. 'prefix' => 'think',
  82. 'auto_start' => true,
  83. // redis主机
  84. 'host' => '127.0.0.1',
  85. // redis端口
  86. 'port' => 6379,
  87. // 密码
  88. 'password' => '',
  89. ]
  90. session('name', ['thinkphp']); 设置支持字符串 数组
  91. session('name');获取
  92. session('name', null);删除
  93. session(null);清空
  94. cookie('name', 'value', 3600);
  95. 设置不支持数组,序列化后存储
  96. cookie('name');
  97. cookie('name', null);
  98. cookie('think_lang','en-us');//设置语言类型
  99. lang('add user error');//翻译
  100. config('cache.type') 读取配置

验证

  1. {:token_field()} 模板中输出令牌
  2. {:token_meta()} ajax提交
  3. $.ajaxSetup({
  4. headers: {
  5. 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  6. }
  7. });
  8. Route::post('blog/save','blog/save')->token(); 路由中使用验证
  9. think\facade\Validate
  10. $rule = [
  11. 'name' => 'require|max:25',
  12. 'age' => 'number|between:1,120',
  13. 'email' => 'email',
  14. ];
  15. $msg = [
  16. 'name.require' => '名称必须',
  17. 'name.max' => '名称最多不能超过25个字符',
  18. 'age.number' => '年龄必须是数字',
  19. 'age.between' => '年龄只能在1-120之间',
  20. 'email' => '邮箱格式错误',
  21. ];
  22. $data = [
  23. 'name' => 'thinkphp',
  24. 'age' => 10,
  25. 'email' => 'thinkphp@qq.com',
  26. ];
  27. $validate = Validate::rule($rule)->message($msg);
  28. $result = $validate->check($data);
  29. if(!$result) {
  30. dump($validate->getError());
  31. }

路由

  1. Route::get('new/<id>','News/read'); // 定义GET请求路由规则
  2. Route::post('new/<id>','News/update'); // 定义POST请求路由规则
  3. Route::put('new/:id','News/update'); // 定义PUT请求路由规则
  4. Route::delete('new/:id','News/delete'); // 定义DELETE请求路由规则
  5. Route::any('new/:id','News/read'); // 所有请求都支持的路由规则
  6. ->allowCrossDomain();跨域

输出响应

  1. $data=['code'=>200,'msg'=>'信息提示','list'=>['中国']];
  2. json($data);
  3. jsonp($data);
  4. xml($data);
  5. redirect('http://www.thinkphp.cn');
  6. redirect('/index/hello/name'); //站内跳转
  7. download('./static/2.xlsx'); 下载

数据库

  1. use think\facade\Db;
  2. $rs =Db::name('user')->where('id',1)->find(); 查询一条记录 name不含前缀
  3. $rs =Db::table('ims_user')->where('sex', 2)->select(); 多条数据 table含前缀
  4. $rs1 =Db::name('user')->where('id', 1)->value('name'); 查询某个字段值
  5. $rs =Db::table('ims_user')->where('sex', 2)->column('name,id','id'); 返回name,id列,后面是key
  6. $userId = Db::name('user')->insertGetId($data);//插入数据返回id
  7. Db::name('user')
  8. ->limit(100)
  9. ->insertAll($data); 插入多条数据,分每次100
  10. Db::name('user')
  11. ->where('id', 1)
  12. ->update(['name' => 'thinkphp']); 更新
  13. Db::table('think_user')->delete(1);
  14. Db::table('think_user')->delete([1,2,3]);
  15. Db::table('think_user')->where('id',1)->delete();
  16. Db::name('user')->delete(true);//清空数据
  17. where('id','<>',1) 不等于1 > >= like
  18. where("id=:id and username=:name", ['id' => 1 , 'name' => 'thinkphp'])
  19. field('id,title,content') 指定字段
  20. limit(10,25) 第十条开始25条 单数字返回数据条数
  21. page(1,10) 第一页十条
  22. order(['id'=>'desc','sex'=>'desc']) 排序
  23. group('user_id,test_time') 分组
  24. count() max('id') min() avg() sum() 聚合函数
  25. whereTime('birthday', '>=', '1970-10-1') 支持< =
  26. whereTime('create_time','-2 hours') 查询2小时
  27. whereBetweenTime('create_time', '2017-01-01', '2017-06-30') 查询时间段
  28. whereYear('create_time') 今年 whereYear('create_time','2018') last year 去年
  29. whereMonth('create_time') last month上月 2018-06 具体月份
  30. whereWeek('create_time') last week 上周
  31. whereDay('create_time')今天 yesterday昨天 2018-11-1具体
  32. Db::query("select * from think_user where status=1"); 原生查询
  33. Db::execute("update think_user set name='thinkphp' where status=1");//更新插入删除
  34. Db::query("select * from think_user where id=? AND status=?", [8, 1]);//绑定
  35. $list = Db::name('user')->where('status',1)->paginate(10); 分页每页10条

模型
定义全局常量

  1. define('__URL__',\think\facade\Request::domain(1)); http://tp6.api.shanliwawa.top
  2. define('__ROOT__',\think\facade\app::getRootPath()); 系统根目录 C:\www\tp6\
  3. define("PRE",config('database.prefix')); 表前缀

绝对路径获取

  1. \think\facade\app::getRootPath() 根目录C:\www\tp6\
  2. \think\facade\app::getAppPath() 应用路径 C:\www\tp6\app\index\
  3. \think\facade\app::getConfigPath() 配置路径C:\www\tp6\config\
  4. \think\facade\app::version() 核心版本

模板视图

  1. use think\facade\View;
  2. View::assign([
  3. 'name' => 'ThinkPHP',
  4. 'email' => 'thinkphp@qq.com'
  5. ]);
  6. View::assign('data',[
  7. 'name' => 'ThinkPHP',
  8. 'email' => 'thinkphp@qq.com'
  9. ]);
  10. View::fetch('index');
  11. 助手函数
  12. view('index', [
  13. 'name' => 'ThinkPHP',
  14. 'email' => 'thinkphp@qq.com'
  15. ]);
  16. 模板输出
  17. {$name}
  18. {$data.name} 等价 {$data['name']}
  19. {:dump($data)} 使用函数 :开头
  20. {$user.nickname|default="这家伙很懒,什么也没留下"}
  21. {$Think.cookie.name} // 输出$_COOKIE['name']变量
  22. {$Think.server.script_name} // 输出$_SERVER['SCRIPT_NAME']变量
  23. {$Think.session.user_id} // 输出$_SESSION['user_id']变量
  24. {$Think.get.page} // 输出$_GET['page']变量
  25. {$Request.param.name} 获取name
  26. {$data.name|raw} 不转义输出
  27. {$data.create_time|date='Y-m-d H:i'}
  28. {literal}
  29. Hello,{$name}!
  30. 原样输出
  31. {/literal}
  32. {load href="/static/js/common.js,/static/js/common.css" /} 加载js,css
  33. {php}echo 'Hello,world!';{/php}
  34. {/* 注释内容 */ } 或 {// 注释内容 }
  35. {include file="public/header" /} 模板包含
  36. {include file="Public/header" title="$title" keywords="开源WEB开发框架" /} 传入参数
  37. {foreach $list as $key=>$vo }
  38. {$vo.id}:{$vo.name}
  39. {/foreach}
  40. {for start="开始值" end="结束值" comparison="" step="步进值" name="循环变量名" }
  41. {/for}
  42. {if 表达式}value1
  43. {elseif 表达式 /}value2
  44. {else /}value3
  45. {/if}

记录日志

  1. log.php 可添加 'json' => 1 表示json格式
  2. trace("日志信息")
  3. app.php中
  4. 'app_trace' => true,
  5. trace.php改为默认html
  6. 'type' => 'Console',

上传

  1. $file = request()->file('image');
  2. 移动到框架应用根目录/uploads/ 目录下
  3. $info = $file->move( '../uploads');
  4. if($info){
  5. 成功上传后 获取上传信息
  6. 输出 jpg
  7. echo $info->getExtension();
  8. 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
  9. echo $info->getSaveName();
  10. 输出 42a79759f284b767dfcb2a0197904287.jpg
  11. echo $info->getFilename();
  12. }else{
  13. 上传失败获取错误信息
  14. echo $file->getError();
  15. }
  16. 多文件xphr
  17. foreach($files as $file){}
  18. 验证,生成带md5文件名
  19. $info = $file->rule('md5')->validate(['size'=>15678,'ext'=>'jpg,png,gif'])->move( '../uploads');
解压密码: detechn或detechn.com

免责声明

本站所有资源出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。

本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户自行鉴别,做一个有主见和判断力的用户。

本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。

《贤二机器僧漫游人工智能》kindle+epub+mobi+azw3+pdf
« 上一篇 01-19
什么是数据结构?
下一篇 » 01-21

发表评论