請求變量
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://tp6.api.shanliwawa.top:80/index/index Request::domain(1) http://tp6.api.shanliwawa.top 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是否存在 url('index/hello', ['id'=>5,'name'=>'李白'],'do'); http://tp6.api.shanliwawa.top/index/hello/李白.do?id=5 url('index/hello#aa'); 錨點 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('name', 'value', 3600); 設置不支持數組,序列化后存儲 cookie('name'); cookie('name', null); cookie('think_lang','en-us');//設置語言類型 lang('add user error');//翻譯 config('cache.type') 讀取配置
驗證
{:token_field()} 模板中輸出令牌 {:token_meta()} ajax提交 $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } }); Route::post('blog/save','blog/save')->token(); 路由中使用驗證 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()); }
路由
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();跨域
輸出響應
$data=['code'=>200,'msg'=>'信息提示','list'=>['中國']]; json($data); jsonp($data); xml($data); redirect('http://www.thinkphp.cn'); redirect('/index/hello/name'); //站內跳轉 download('./static/2.xlsx'); 下載
數據庫
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條
模型
定義全局常量
define('__URL__',\think\facade\Request::domain(1)); http://tp6.api.shanliwawa.top define('__ROOT__',\think\facade\app::getRootPath()); 系統根目錄 C:\www\tp6\ define("PRE",config('database.prefix')); 表前綴
絕對路徑獲取
\think\facade\app::getRootPath() 根目錄C:\www\tp6\ \think\facade\app::getAppPath() 應用路徑 C:\www\tp6\app\index\ \think\facade\app::getConfigPath() 配置路徑C:\www\tp6\config\ \think\facade\app::version() 核心版本
模板視圖
use think\facade\View; View::assign([ 'name' => 'ThinkPHP', 'email' => 'thinkphp@qq.com' ]); View::assign('data',[ 'name' => 'ThinkPHP', 'email' => 'thinkphp@qq.com' ]); View::fetch('index'); 助手函數 view('index', [ 'name' => 'ThinkPHP', 'email' => 'thinkphp@qq.com' ]); 模板輸出 {$name} {$data.name} 等價 {$data['name']} {:dump($data)} 使用函數 :開頭 {$user.nickname|default="這家伙很懶,什么也沒留下"} {$Think.cookie.name} // 輸出$_COOKIE['name']變量 {$Think.server.script_name} // 輸出$_SERVER['SCRIPT_NAME']變量 {$Think.session.user_id} // 輸出$_SESSION['user_id']變量 {$Think.get.page} // 輸出$_GET['page']變量 {$Request.param.name} 獲取name {$data.name|raw} 不轉義輸出 {$data.create_time|date='Y-m-d H:i'} {literal} Hello,{$name}! 原樣輸出 {/literal} {load href="/static/js/common.js,/static/js/common.css" /} 加載js,css {php}echo 'Hello,world!';{/php} {/* 注釋內容 */ } 或 {// 注釋內容 } {include file="public/header" /} 模板包含 {include file="Public/header" title="$title" keywords="開源WEB開發框架" /} 傳入參數 {foreach $list as $key=>$vo } {$vo.id}:{$vo.name} {/foreach} {for start="開始值" end="結束值" comparison="" step="步進值" name="循環變量名" } {/for} {if 表達式}value1 {elseif 表達式 /}value2 {else /}value3 {/if}
記錄日志
log.php 可添加 'json' => 1 表示json格式 trace("日志信息") app.php中 'app_trace' => true, trace.php改為默認html 'type' => 'Console',
上傳
$file = request()->file('image'); 移動到框架應用根目錄/uploads/ 目錄下 $info = $file->move( '../uploads'); if($info){ 成功上傳后 獲取上傳信息 輸出 jpg echo $info->getExtension(); 輸出 20160820/42a79759f284b767dfcb2a0197904287.jpg echo $info->getSaveName(); 輸出 42a79759f284b767dfcb2a0197904287.jpg echo $info->getFilename(); }else{ 上傳失敗獲取錯誤信息 echo $file->getError(); } 多文件xphr foreach($files as $file){} 驗證,生成帶md5文件名 $info = $file->rule('md5')->validate(['size'=>15678,'ext'=>'jpg,png,gif'])->move( '../uploads');
原文地址
https://www.kancloud.cn/logoove/we7/1094868