請求變量
~~~
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');
~~~
- 簡介
- 第一章 數據庫
- Mysql/mariadb
- 函數
- 基礎
- 增刪改索引
- 標準查詢
- 高級查詢
- TIDB集群mysql解決方案
- Redis
- 語言基礎
- 5種數據類型
- 其他類型
- Sqlite
- 語言基礎
- 常用查詢
- 第二章 PHP
- 語言基礎
- 第一課 流程控制和運算
- 第二課 數組
- 第三課 日期時間
- 第四課 常用函數
- 第五課 字符串
- 第六課 文件操作
- 第七課 面向對象
- 第八課 正則表達式
- 第九課 圖片處理生成
- 第十課 curl/memche
- 第十一課 mysql和pdo
- 第十三課 cookie和session
- 第十四課 xml操作
- 第十五課 php5.3+新特性
- 第十六課 php7+
- 第十七課 密碼安全
- 廢棄函數
- php命令行
- redis應用
- 算法
- 排序算法
- 基礎算法
- 無限級分類
- 自定義函數Fn
- 查找算法
- 自定義函數數據函數fn
- laravel
- 路由
- 常用語句
- 數據庫
- dingo/api
- Yii2
- 控制器
- 常用類
- 數據庫
- redis
- thinkphp6
- TP6文檔
- TP6插件
- dedecms
- 織夢標簽大全
- 數據庫操作
- 內置函數和定義函數
- 織夢核心改動
- 織夢插件/底層標簽開發
- PHP相關工具
- composer
- php開發環境phpenv
- Phpstorm使用
- windows編譯php擴展
- PHP開源庫
- 開源項目管理禪道
- sns_auth
- php-casbin權限控制
- php-jwt
- 微信SDKeasywechat
- querylist采集庫
- workerman
- Box/Spout處理excel和csv
- dll擴展
- redis/memche/xdebug
- redis
- Lua
- php_xlswriter
- event
- swoole
- 常用代碼庫
- 微擎框架
- 第一課全局變量
- 第二課常用函數
- 第三課自定義微擎獨有函數
- 第四課數據庫操作
- 第五課微信端回復
- 第六課微擎高級操作
- 第八課global函數列表
- mainfest.xml詳解
- js方法
- 人人商城
- 第一課model解讀
- 第二課常用語句解讀
- 第三課常用js解讀
- 第四課附錄常見問題
- 第五課附錄處理報表|支付
- 常用JSON狀態碼
- 第三章 JavaScript
- js基礎
- 瀏覽器對象
- 語言基礎
- html5接口
- ES6新語法
- vue
- 基礎語法
- 京東vueUI組件
- uniapp
- 組件開發規范
- nodejs
- 基礎知識
- 安裝node
- nvm不同版本node切換
- js常用標準庫
- zepto/jquery
- weui
- js圖標庫
- elementUI
- validator表單驗證
- layer彈出層
- requirejs
- wow動畫
- 動畫animate
- swiper4
- 百度編輯器
- flyio/axios/qs
- jquery.form
- bootstrap3
- clipboard復制
- slideout側滑
- imagehover.css圖片懸停動畫
- webpack打包
- Bulma UI框架
- store 客戶端存儲
- lottie動畫創建庫
- sweetalert
- js自定義函數
- 常見JSSDK
- 微信公眾號JSSDK
- 騰訊地圖jssdk
- 微信小程序
- 第四章 編程語言
- markdown語言
- Dart語言
- Dart語言基礎
- Flutter框架
- Lua語言
- 字符串,數組,表
- 自定義方法
- go語言
- 第1.1語言基本語法
- 第1.2流程控制
- 第1.3函數
- 第1.4結構體
- 第1.5接口
- 第1.6包
- go語言框架Gin
- CSS3語言
- CSS與CSS3
- 選擇符
- 屬性
- css3
- loading動畫
- HTML5語言
- less
- sass
- C#
- 基礎知識
- 函數
- 第五章 開發工具
- git
- nginx/apache服務器
- Linux常用操作
- crontab定時任務
- 注冊表與cmd
- 阿里云ECS
- frp穿透和ssl續期
- 寶塔安裝
- 樹莓派
- 瀏覽器模擬
- 火狐/chrome常用插件
- WSL安裝使用
- mac brew和終端命令
- win10相關