程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> Thinkphp 內部函數 ADSLCFUI 快捷方法全解析

Thinkphp 內部函數 ADSLCFUI 快捷方法全解析

編輯:關於PHP編程

ThinkPHP為一些常用的操作定義了快捷方法,這些方法具有單字母的方法名,具有比較容易記憶的特點。非常有意思的是,這些快捷方法的字母包含了ADSL字母,所以我們稱之為ADSL方法。A、D、S、L、C、F、U、I 這幾個快捷方法都在 /THINKPHP/Common/functions.php 這個文件中,下面我分別說明一下他們各自的功能和用法。

A() 加載Action類
D() 加載Model類
S() 全局緩存配置
L() 獲取語言定義
C() 獲取配置值
F() 快速文件數據讀取和保存 針對簡單類型數據 字符串、數組
U() 用於完成對URL地址的組裝
I() 快速創建一個對象實例

1.A 快速創建Action對象

$action=new UserAction();// 等同於以下寫法:$action=A("User");而且,如果當前的UserAction類還沒有引入的話,A方法會自動引入。並且具有單例模式的支持,不會重復創建相同的Action對象。

A方法支持跨項目調用,例如:
 
$action=A("User",'Admin'); //實例化Admin項目的UserAction類

2.D 快速創建模型數據對象
 
先定義好模型類,如UserModel,然後就可以用D()函數對數據進行操作了。例如:
 
先在"你的項目"/Lib/Model下建立一個名為UserModel.class.php的PHP腳本,內容如下:
 
class UserModel extends Model{}

然後,無需增加任何屬性和方法,就可以進行如下操作:
 
$User=D("User"); //實例化User對象,User是你在數據庫建立的一個名為"前綴_user"的數據表,也可以用$User=new UserModel()代替,進行實例化對象的操作。實例化之後,就可以對數據進行增刪查改等一系列操作了,如:
 
$User->find(1); //查找主鍵為1的記錄

我們在做用戶金幣或者是積分或者是投票的時候,需要對指定的字段自加1這時候我可以可以這樣寫

$User->score='(score+1)';$s->save(); 這樣我們會省下許多的步驟。

如果要修改指定的一個字段更可以簡寫為如下:

D('User')->setField('name','hehe','id=2');

D 方法和 M 方法的區別主要在於:

M方法不需要創建模型類文件,M方法不會讀取模型類,所以默認情況下自動驗證是無效的,但是可以通過動態賦值的方式實現;而D方法必須有創建模型類,我們可以用下面兩種方法去創建一個數據表的映射對象。

第一種:$Test=D('Test');

第二種:$Test=new Model('Test');

雖然這兩種都可以對數據進行select,insert,delete,udpate操作,在數據驗證上有很大的不同,用第一種方式實例一個模型就會有數據檢查功能,例如可以定義如果 title 沒有填寫的話就會提示 “請輸入標題” (這個是tp提供的一個自動驗證功能,當然也需要在相應的 model 中定義好驗證條件);

D方法可以自動檢測模型類,不存在時他會拋出一個異常。同時對於已實例化得得模型不會再去重復實例化(單例)。默認的D方法只能支持調用當前的項目(或者叫做應用)下的模型。例如:

$user=new UserModel();

等價於$user=D('user');

如果實例化的是一個空模型,例如:

$Demo=new Model();

那麼它等價於:

$Demo=M();
 
3.S 快速操作緩存方法
 
ThinkPHP把各種緩存方式都抽象成統一的緩存類來調用,而且ThinkPHP把所有的緩存機制統一成一個S方法來進行操作,所以在使用不同的緩存方式的時候並不需要關注具體的緩存細節。如:

S('data',$Data); //使用data標識緩存$Data數據
S('data',$Data,3600); //緩存$Data數據3600秒
$Data=S('data'); //獲取緩存數據
S('name',null); // 刪除緩存標識name
 
4.L 快速操作語言變量

L方法提供了多語言的支持,可以快速設置和獲取語言定義。

L('USER_INFO','用戶信息'); //設置名稱為USER_INFO 的語言變量
L('USER_INFO'); //獲取USER_INFO的語言變量值
//批量賦值
$array['USER_INFO']='用戶信息';$array['ERROR_INFO']='錯誤信息';
L($array);

5.C 快速操作配置變量,用法就是 C("這裡填寫在配置文件裡數組的下標")

C('USER_AUTH_ON',true); //設置名稱為USER_AUTH_ON 的配置參數
C('USER_AUTH_ON'); //獲取USER_AUTH_ON的變量值

同L一樣,C也支持批量賦值
 
注意:配置參數不區分大小寫

此外從1.5版本開始,C方法還支持二維數組的操作,例如:
 
C('USER.USER_TYPE',1);
C('USER.USER_AUTH_ON');  

6. F 文件數據保存方法

F方法主要用於項目的文件數據的寫入、更改和刪除,其工作機理和S方法是類似的,區別在於用途不同,數據保存的目錄也不同,而且不能指定緩存方式,因為默認就是文件形式保存數據。F方法使用了var_export方法,所以只能支持簡單數據類型,不支持對象的緩存。

7. U 用於完成對URL地址的組裝,特點在於可以自動根據當前的URL模式和設置生成對應的URL地址

該函數格式為:U('地址','參數','偽靜態','是否跳轉','顯示域名');在模板中使用U方法而不是固定寫死URL地址的好處在於,一旦你的環境變化或者參數設置改變,你不需要更改模板中的任何代碼。在模板中的調用格式需要采用 {:U('地址', '參數'…)} 的方式。

U方法的用法示例:

U('User/add') // 生成User模塊的add操作地址

也可以支持分組調用:

U('Home/User/add') // 生成Home分組的User模塊的add操作地址

當然,也可以只是寫操作名,表示調用當前模塊的

U('add') // 生成當前訪問模塊的add操作地址

除了分組、模塊和操作名之外,我們也可以傳入一些參數:

U('Blog/read?id=1') // 生成Blog模塊的read操作 並且id為1的URL地址

U方法的第二個參數支持傳入參數,支持數組和字符串兩種定義方式,如果只是字符串方式的參數可以在第一個參數中定義,下面幾種方式都是等效的:

U('Blog/cate',array('cate_id'=>1,'status'=>1))
U('Blog/cate','cate_id=1&status=1')
U('Blog/cate?cate_id=1&status=1')

您可能感興趣的文章

  • PHP中的字符串處理函數(String Functions) 全總結
  • PHP 生成連續的數字(字母)數組函數range()分析,PHP抽獎程序函數
  • thinkphp 的 Action 控制器中的系統常量總結
  • php中在變量和函數前加static關鍵字之後的區別
  • PHP filter_var() 函數 Filter 函數
  • PHP壓縮html網頁代碼減小網絡數據傳輸量,清除空格,制表符,注釋標記
  • thinkphp自動驗證與自動填充無效的解決辦法
  • 在php中分別使用curl的post提交數據的方法和get獲取網頁數據的方法總結

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved