php

thinkphp:thinkphp6速查手册

2023-10-08

申请变量

use think\facade\Request;

Request::param('name');

Request::param();全副申请变量 返回数组

Request::param(['name', 'email']); 多个变量

Request::param('a','1') $a不存在应用默认值1

Request::param('username','','strip_tags'); 参数过滤 去掉html标签 htmlspecialchars转换成实体入库 strtolower小写

Request::header(); 申请头数组,反对单个 cookie

input("name");

Request::session();获取 $_SESSION 变量

Request::cookie();获取 $_COOKIE 变量

Request::server();获取 $_SERVER 变量

Request::env();返回env数组

Request::file();获取 $_FILES 变量



Request::baseUrl(); /index/index

Request::host(true); 域名:www.baidu.com,默认无参数蕴含端口:80

Request::url(1); 残缺域名和地址 http://www.baidu.com:80/index/index

Request::domain(1)   http://www.baidu.com

Request::time()  申请工夫戳

Request::app() 利用名 index

Request::controller() 控制器 Index 参数true小写

Request::action() 操作 index 参数true 小写

Request::method(true); 申请类型获取  GET

isGet isPost isPut isDelete isAjax isMobile isHead 判断是否某种类型

Request::has('id','get'); 检测变量id是否存在

响应

$data=['code'=>200,'msg'=>'胜利','data'=>['中国']];

json($data);

jsonp($data);

xml($data);

redirect('http://www.thinkphp.cn');

redirect('/index/hello/name'); //站内跳转

download('./static/2.xlsx'); 下载

路由

Route::get('new/<id>','News/read'); // 定义GET申请路由规定

Route::post('new/<id>','News/update'); // 定义POST申请路由规定

Route::put('new/:id','News/update'); // 定义PUT申请路由规定

Route::delete('new/:id','News/delete'); // 定义DELETE申请路由规定

Route::any('new/:id','News/read'); // 所有申请都反对的路由规定

->allowCrossDomain();跨域

url生成

url('index/hello', ['id'=>5,'name'=>'李白'],'do');  http://www.baidu.com/index/hello/李白.do?id=5

url('index/hello#aa'); 锚点

数据库操作

use think\facade\Db;

$rs =Db::name('user')->where('id',1)->find();  查问一条记录 name不含前缀

$rs =Db::table('ims_user')->where('sex', 2)->select(); 多条数据 table含前缀

$rs1 =Db::name('user')->where('id', 1)->value('name'); 查问某个字段值

$rs =Db::table('ims_user')->where('sex', 2)->column('name,id','id'); 返回name,id列,前面是key

$userId = Db::name('user')->insertGetId($data);//插入数据返回id

Db::name('user')

->limit(100)

->insertAll($data); 插入多条数据,分每次100

Db::name('user')

->where('id', 1)

->update(['name' => 'thinkphp']); 更新

Db::table('think_user')->delete(1);

Db::table('think_user')->delete([1,2,3]);

Db::table('think_user')->where('id',1)->delete();

Db::name('user')->delete(true);//清空数据

where('id','<>',1)  不等于1  >  >=   like 

where("id=:id and username=:name", ['id' => 1 , 'name' => 'thinkphp'])

field('id,title,content') 指定字段

limit(10,25) 第十条开始25条  单数字返回数据条数

page(1,10) 第一页十条

order(['id'=>'desc','sex'=>'desc']) 排序

group('user_id,test_time') 分组

count() max('id') min() avg() sum() 聚合函数

whereTime('birthday', '>=', '1970-10-1')  反对< = 

whereTime('create_time','-2 hours') 查问2小时

whereBetweenTime('create_time', '2017-01-01', '2017-06-30') 查问时间段

whereYear('create_time') 往年 whereYear('create_time','2018')  last year 去年

whereMonth('create_time') last month上月 2018-06 具体月份

whereWeek('create_time') last week 上周

whereDay('create_time')明天 yesterday昨天 2018-11-1具体


Db::query("select * from think_user where status=1"); 原生查问

Db::execute("update think_user set name='thinkphp' where status=1");//更新插入删除

Db::query("select * from think_user where id=? AND status=?", [8, 1]);//绑定

$list = Db::name('user')->where('status',1)->paginate(10); 分页每页10条

缓存操作

Cache::set('name', $value, 3600); 1小时后过期

Cache::get('name'); 获取缓存


多缓存类型配置

return [

    // 缓存类型为File

    'type'  =>  'redis',

    // 全局缓存有效期(0为永恒无效)

,开发下肯定要设置-1 否在刷新后 还在

    'expire'=>  -1,

    // 缓存前缀

    'prefix'=>  'think',

    // 缓存目录

    'host'       => '127.0.0.1',

];

return [

    // 应用复合缓存类型

    'type'  =>  'complex',

    // 默认应用的缓存

    'default'   =>  [

        // 驱动形式

        'type'   => 'file',

        // 缓存保留目录

        'path'   => '../runtime/default',

    ],

    // 文件缓存

    'file'   =>  [

        // 驱动形式

        'type'   => 'file',

        // 设置不同的缓存保留目录

        'path'   => '../runtime/file/',

    ],

    // redis缓存

    'redis'   =>  [

        // 驱动形式

        'type'   => 'redis',

        // 服务器地址

        'host'       => '127.0.0.1',

    ],

];

use think\facade\Cache;

Cache::store('file')->set('name','123',0);

$v =   Cache::store('redis')->get('name');

 Cache::store('default')->get('name');文件缓存

Cache::delete('name');

Cache::clear();

Cache::set('name', [1,2,3]);

Cache::push('name', 4);

Cache::remember('start_time', time()); 不存在则创立

Cache::inc('name',1); 自增1

Cache::dec('name',1); 自减1

$redis = Cache::handler(); redis对象

配置redis session

return [

    'type'       => 'redis',

    'prefix'     => 'think',

    'auto_start' => true,

     // redis主机

    'host'       => '127.0.0.1',

     // redis端口

    'port'       => 6379,

     // 明码

    'password'   => '',

]

session('name', ['thinkphp']); 设置反对字符串 数组

session('name');获取

session('name', null);删除

session(null);清空

cookie操作

 设置不反对数组,序列化后存储

cookie('name');

cookie('name', null);


cookie('think_lang','en-us');//设置语言类型

数据验证

think\facade\Validate

$rule = [

    'name'  => 'require|max:25',

    'age'   => 'number|between:1,120',

    'email' => 'email',

];

$msg = [

    'name.require' => '名称必须',

    'name.max'     => '名称最多不能超过25个字符',

    'age.number'   => '年龄必须是数字',

    'age.between'  => '年龄只能在1-120之间',

    'email'        => '邮箱格局谬误',

];

$data = [

    'name'  => 'thinkphp',

    'age'   => 10,

    'email' => 'thinkphp@qq.com',

];

$validate   = Validate::rule($rule)->message($msg);

$result = $validate->check($data);

if(!$result) {

    dump($validate->getError());

}