默認配置 < 公共配置 < 模式配置 < 調試配置 < 場景配置 < 模塊配置 < 擴展配置 < 動態配置。javascript
C方法:C($name = null, $value = null, $default = null)php
普通模式:http://www.example.com/index.php?m=home&c=index&a=indexhtml
pathinfo模式:http://www.example.com/index.php/home/index/index前端
rewrite模式:http://www.example.com/ home/index/indexjava
兼容模式:http://www.example.com/index.php?s=home/index/indexajax
「URL_ROUTER_ON」 => truesql
「URL_ROUTE_RULES」 => array (數據庫
… 路由表達式json
)數組
路由表達式:
一、規則路由
二、正則路由
三、靜態路由
經過URL_HTML_SUFFIX設置僞靜態的後綴
Windows不區分大小寫,Linux區分。可設置參數:URL_CASE_INSENSITIVE = true 可實現URL不區分大小寫,保持Windows與Linux一致
U(地址表達式, 參數, 是否顯示僞靜態後綴, 是否顯示域名)
地址表達式:
[模塊/控制器/操做#錨點@域名]?參數1=值1&參數2=值2…
ajaxReturn(變量[, ‘xml/json’)] 默認爲json
redirect(URL地址表達式, URL變量, 延遲時間, 提示消息)
success(提示信息, 跳轉地址, 跳轉時間)
跳轉地址:默認跳轉$_SERVER[「HTTP_REFERER」]
跳轉時間:默認1s
error(提示信息, 跳轉地址, 跳轉時間)
跳轉地址:默認跳轉javascript:history:back(-1);
跳轉時間:默認3s
注:
redirect不可以使用模板,只能輸出字符串。
success/error可以使用模板,默認爲THINK_PATH.’Tpl/dispatch_jump.tpl’
「TMPL_ACTION_SUCCESS」 配置success模板
「TMPL_ACTION_ERROR」 配置error模板
I(‘變量來源.變量名|修飾符’, [‘默認值’], [‘過濾方法’], [‘額外數據源’]
變量來源:
來源 |
說明 |
get |
$_GET |
post |
$_POST |
param |
自動判斷$_GET、$_POST和$_PUT |
request |
$_REQUEST |
put |
$_PUT |
session |
$_SESSION |
cookie |
$_COOKIE |
server |
$_SERVER |
globals |
$_GLOBALS |
path |
獲取PATHINFO模式的URL參數 |
data |
獲取其餘類型的參數,須要配合額外數據源 |
修飾符:
修飾符 |
說明 |
s |
強制轉換爲字符串 |
d |
強制轉換爲整數 |
b |
強制轉換爲布爾型 |
a |
強制轉換爲數組 |
f |
強制轉換爲浮點型 |
過濾方法:
一、沒有指定:則採用配置」DEFAULT_FILTER」的值(默認爲htmlspecialchars)
二、指定的爲函數名:則直接使用該函數進行操做(能夠是數組)
三、不是函數名:則調用內置的方法filter_var
四、不過濾:傳false
IS_GET\IS_POST\IS_PUT\IS_DELETE\IS_AJAX\REQUEST_METHOD
_before_actionname() _after_actioname()
functionname($para)
_empty($actionname)
EmptyController.class.php
一、new 模型類
二、M方法
三、D方法
where\table\alias\data\field(可用來排除字段)\order\limit\page\group\having\join\uion\distinct\lock\cache\fetchSql(返回sql,並不執行sql)\strict\index\count\max\min\avg\sum\query(直接執行原生select語句)\execute(直接執行原生insert\update\delete語句)
create() 處理數據,默認自動讀取$_POST的數據
add() 新增
getField() 獲取某列
find() 讀取單條數據
select() 讀取數據集
save() 更新
setField() 更新指定字段
setDec() 對指定字段減操做
setInc() 對指定指定加操做
delete() 刪除
一、可直接拼接字符串,存在sql注入風險
二、使用數組
三、使用對象
靜態方式:在模型類中經過$_validate定義
動態方式:使用模型類的validate方法
規則格式:
array(
array(字段名, 驗證規則, 錯誤提示, [驗證條件, 附加規則, 驗證場景])
)
靜態方式:在模型類裏面經過$_auto屬性定義處理規則
動態方式:使用模型類的auto方法動態建立自動處理規則
規則格式:
array(
array(完成字段, 完成規則, [完成條件, 附加規則])
)
須要
use Think\Model\ViewModel
模型類 extends ViewMode
須要
use Think\Model\RelationModel
模型類 extends RelationMode
關聯關係:HAS_ONE, BELONGS_TO, HAS_MANY, MANY_TO_MANY
視圖目錄/[模板主題]/控制器名/操做名+視圖後綴
默認不啓用 模板主題,可經過設置DEFAULT_THEME設置
視圖後綴 默認爲 .html,可經過 TMPL_TEMPLATE_SUFFIX 設置
視圖目錄 默認爲 View,可經過 DEFAULT_V_LAYER 設置
模板賦值:
在控制器中,經過$this->assign(‘data’, $data)的方式進行賦值,這樣在模板中可以使用data獲取數據。$data能夠是數組。
模板渲染:
display([模板文件路徑], [字符編碼], [mime類型])
模板文件路徑寫法:
一、無參數:系統自動定位,默認爲「模塊名/View/控制器名/方法名.html」
二、[模塊@][控制器:][操做]:好比$this->display(‘User:login’),將定位到「模塊名/View/User/login.html」
三、完整模板文件名
fetch方法,返回模板內容,不會輸出到瀏覽器,可用此方法開發頁面緩存功能。
{$val}
默認的{}可經過設置「TMPL_L_DELIM」和」TMPL_R_DELIM」來替換
$_SERVER、$_ENV、$_POST、$_GET、$_REQUEST、$_SESSION、$_COOKIE、配置文件
可經過
$Think.server.變量名
$Think.post.變量名
$Think.cookie.變量名
$Think.config.變量名
…
輸出
可以使用PHP內置函數、ThinkPHP內置函數、用戶自定義函數、類靜態方法
格式:
{變量|函數1|函數2[…=參數1,參數2…]},若是參數是|前面的值,則可用###代替,
|相似管道的做用,函數從左到右求值後轉入後續函數
{變量|default=默認值}
當變量爲空時,顯示默認值。 ?? default應該就是一個函數吧??
{+、-、*、/、%}
注:
若是操做數是數組,則使用$arr[‘name’]的形式,不可以使用arr.name
若是操做數是對象,則使用$obj->name的形式,不可以使用obj->name
在父模板中
<block name=」block名稱」></block>
在子模板中
<extend name=」父模板文件名」/>
<block name=」父模板中的block名稱」>內容</block>
<include file=」模板表達式或模板文件路徑」/>
模板表達式:
[模塊@][主題/]控制器/操做 (/也可用:替換)
include\import\volist\foreach\for\switch\case\default\compare\range\present\notpresent\empty\notempty\defined\notdefined\define\assign\if\elseif\else\php(使用原生PHP語法<?php … ?>)
不解析輸出:
<literal>
…裏面的標籤不會被解析
</literal>
layout.html
<include file=」控制器名:header」/>
<div id=」content」>
{__CONTENT__}
</div>
<include file=」控制器名:footer」/>
index.html
<layout name=」控制器名:layout」/>
<p>正文</p>
名稱 |
常量 |
__ROOT__ |
當前網址(不包括域名) |
__APP__ |
當前應用的URL地址(不包括域名) |
__MODULE__ |
當前模塊的URL地址(不包括域名) |
__CONTROLLER__ |
當前控制器的URL地址(不包括域名) |
__ACTION__ |
當前操做的URL地址(不包括域名) |
__SELF__ |
當前頁面的URL |
在模板中直接填常量名稱,不用{}包裹
設置調試模式
define(‘APP_DEBUG’, true/false)
LOG_RECORDED => true/false
LOG_LEVEL => ‘EMERG,ALERT,CRIT,ERR’
日誌級別
日誌級別 |
說明 |
EMERG |
嚴重錯誤,出現錯誤是程序沒法運行 |
ALERT |
警惕性錯誤,必須當即被修正 |
CRIT |
臨界值錯誤,超過臨界值的錯誤 |
ERR |
通常錯誤 |
WARN |
警告錯誤 |
NOTICE |
通知級別錯誤 |
INFO |
信息級別 |
DEBUG |
調試輸出 |
SQL |
SQL語句,調試模式下有效 |
LOG_TYPE => ‘File/Sae’
寫入日誌
record($message, $level=self::ERR, $record=false)
$record:是否強制記錄
write($message, $level=self::ERR, $type=’’, $destination=’’)
PHP內置:print_r、var_dump
ThinkPHP內置:dump
G(‘start’);
//業務代碼
G(‘end’);
echo G(‘start’, ‘end’).’秒’
getLastSql()
返回該模型最後執行的SQL語句
S($name, $value=’’, $options=null)
ThinkPHP默認開啓session, 可經過SESSION_AUTO_START設置
session(‘key’, ‘value’) 設置 其中key能夠是user.userId 中間帶.的形式
session(‘key’) 獲取
session() 獲取所有
session(‘key’, null) 刪除
session(null) 刪除所有
cookie(‘name’, ‘value); //有效期到瀏覽關閉
cookie(‘name’, ‘value’, 7*24*3600); //有效期一週
cookie(‘name’) 獲取
cookie() 獲取所有
cookie(‘name’, null) 刪除
$mode = new Mode(‘模型名稱’);
$code => $mode -> count(); //總記錄數
$page = new \Think\Page($code, 30); //實例化分頁類,每頁30行
$show = $page -> show(); //分頁顯示數據內容(即分頁的導航條)
$list = $mode -> limit($page -> firstRow . ‘,’ . $page -> listRows) –> select();
$this->assign(‘list’, $list); //賦值數據集
$this->assign(‘page’, $show); //賦值分頁輸出
$this->display();
$upload = new Upload(); //實例化上傳類
$upload -> maxSize = 1024 * 1024 * 2; //2M
$upload -> exts = array(‘jpg’, ‘gif’, ‘png’, ‘jpeg’); //設置上傳類型
$upload -> rootPath = ‘./Uploads/’; //設置上傳根目錄
$upload -> savePath = ‘’; //設置上傳子目錄
//上傳文件
$info = $upload->upload();
if (!$info) {//上傳出錯
$this->error($upload->geError());
} else {
$filePath = ‘Uploads/’ . $info[‘file’][‘savepath’] . $info[‘file’][‘savename’];
}
其中’file’爲頁面input標籤的name屬性
默認的savePath爲日期格式的文件夾
public function verify() {
$verify = new Verify(); //驗證碼類
$verify->entry(); //產生並輸出驗證碼圖片
}
前端頁面中
<img src=」{:U(‘veryfy’)}」 onClick=」this.src = ‘{:U(「verify」)}?’ + Math.random()」 title=」看不清,換一張」 >
驗證
$code = I(‘code’);
$veryfy = new Verify();
if ($verify->check($code)) {
$this->success(‘驗證成功’);
} else {
$this->error(‘驗證碼錯誤’);
}
ThinkPHP的Image類支持GD庫和Imagick庫。
$path = ‘./Public/images/demo.jpg’;
$image = new Image(Image::IMAGE_GD, $path);
或者
$image = new Image(Image::IMAGE_IMAGICK, $path);
thumb($width, $height, $type = self::IMAGE_THUMB_SCALE)
$width:縮略圖最大寬度
$height:縮略圖最大高度
$type:縮略圖剪裁類型
IMAGE_THUMB_SCALE 等比例縮放
IMAGE_THUMB_FIFLED 縮放後填充
IMAGE_THUMB_CENTER 居中
IMAGE_THUMB_NORTHWEST 左上角
IMAGE_THUMB_SOUTHEAST 右下角
IMAGE_THUMB_FIXED 固定尺寸縮放
crop($w, $h, $x = 0, $y = 0, $width = null, $height = null)
$w:剪裁區域的寬度
$h:剪裁區域的高度
$x:剪裁區域橫座標
$y:剪裁區域縱座標
$width:圖片保存寬度
$height:圖片保存的高度
water($source, $locate = self::IMAGE_WATER_SOUTHEAST, $alpha = 80)
$source:水印圖片路徑
$locate:水印位置
$alpha:水印透明度