ThinkPHP

 

配置

默認配置 < 公共配置 < 模式配置 < 調試配置 < 場景配置 < 模塊配置 < 擴展配置 < 動態配置。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設置僞靜態的後綴

URL大小寫

         Windows不區分大小寫,Linux區分。可設置參數:URL_CASE_INSENSITIVE = true 可實現URL不區分大小寫,保持Windows與Linux一致

URL生成

         U(地址表達式, 參數, 是否顯示僞靜態後綴, 是否顯示域名)

地址表達式:

         [模塊/控制器/操做#錨點@域名]?參數1=值1&參數2=值2…

 

Ajax返回

         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

 

 

HTTP請求方法

         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語句)

 

CURD

create() 處理數據,默認自動讀取$_POST的數據

add() 新增

getField() 獲取某列

find() 讀取單條數據

select() 讀取數據集

save() 更新

setField() 更新指定字段

setDec() 對指定字段減操做

setInc() 對指定指定加操做

delete() 刪除

 

where條件

一、可直接拼接字符串,存在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’).’秒’

 

SQL輸出

getLastSql()

返回該模型最後執行的SQL語句

 

 

緩存

 

數據緩存

S($name, $value=’’, $options=null)

 

頁面緩存

 

數據庫查詢緩存

 

 

session

ThinkPHP默認開啓session, 可經過SESSION_AUTO_START設置

 

session(‘key’, ‘value’) 設置 其中key能夠是user.userId 中間帶.的形式

session(‘key’) 獲取

session() 獲取所有

session(‘key’, null) 刪除

session(null) 刪除所有

 

 

 

cookie

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:水印透明度

相關文章
相關標籤/搜索