整理ThinkPHP字母函數指南

2022-03-09 19:00:21
本篇文章給大家帶來了關於的相關知識,其中主要介紹了關於字母函數的相關問題,包括了A、B、C、D方法等等,希望對大家有幫助。

推薦學習:《》

A 方法

用於在內部範例化控制器,呼叫格式:

// A('[專案://][分組/]模組','控制器層名稱')$User = A('User');$User = A('Admin://User');

範例化控制器後,就可以呼叫該控制器中的方法,不過需要注意的情況是,在跨專案呼叫的情況下,如果你的操作方法 有針對當前控制器的特殊變數操作,會有一些未知的問題,所以,一般來說,官方建議需要公共呼叫的控制器層單獨開發,不要有太多的依賴關係。

B 方法

這是隨著行為應運而生的新生函數,可以執行某個行為,例如

B('app_begin');

就是在專案開始之前,執行這個行為定義的所有函數。支援 2 個引數,第二個引數支援需要接受一個陣列,例如

B('app_begin', ["name" => "tdweb","time"=>time()]);

C 方法

C 方法是 Think 用於設定、獲取,以及儲存設定引數的方法,使用頻率較高。

動態設定設定引數,設定引數不區分大小寫,但是建議保持統一大寫的設定定義規範。

C('DB_NAME','think');

支援二級設定引數的設定,設定引數不建議超過二級。例如:

C('USER.USER_ID',8);

如果要設定多個引數,可以使用批次設定,例如:

$config['user_id'] = 1;$config['user_type'] = 1;C($config);

如果傳入的設定引數為空,表示獲取全部的引數:

$config = C();

D 方法

D 方法應該是用的比較多的方法了,用於範例化自定義模型類,是 Think 框架對 Model 類範例化的一種封裝,並實現了單例模式,支援跨專案和分組呼叫,呼叫格式如下:

D('[專案://][分組/]模型','模型層名稱')

方法的返回值是範例化的模型物件。

D 方法可以自動檢測模型類,如果存在自定義的模型類,則範例化自定義模型類,如果不存在,則會範例化 Model 基礎類別,同時對於已範例化過的模型,不會重複去範例化。

D 方法最常用的用法就是範例化當前專案的某個自定義模型,例如:

// 範例化 User 模型$User = D('User');

F 方法

F 方法其實是 S 方法的一個子集功能,僅用於簡單資料快取,並且只能支援檔案形式,不支援快取有效期,因為採用的是返回方式,所以其效率較 S 方法較高,因此我們也稱之為快速快取方法。

F 方法的特點是:

  • 簡單資料快取;
  • 檔案形式儲存;
  • 採用返回資料方式載入快取;
  • 支援子目錄快取以及自動建立;
  • 支援刪除快取和批次刪除;

寫入和讀取快取

F('data','test data');

預設的儲存起始路徑是 DATA_PATH(該常數在預設設定位於 RUNTIME_PATH.‘Data/’ 下面),也就是說會生成檔名為 DATA_PATH.‘data.’ 的快取檔案。

注意:確保你的快取標識的唯一,避免資料覆蓋和衝突。

下次讀取快取資料的時候,使用:

$Data = F('data');

我們可以採用子目錄方式儲存,例如:

F('user/data',$data); 
// 快取寫入F('user/data'); 
// 讀取快取

就會生成 DATA_PATH.‘user/data.’ 快取檔案,如果 user 子目錄不存在的話,則會自動建立,也可以支援多級子目錄,例如:

F('level1/level2/data',$data);

如果需要指定快取的起始目錄,可以用下面的方式:

F('data',$data,TEMP_PATH);

刪除快取

F('data',NULL);

G 方法

G 方法的作用包括標記位置和區間統計兩個功能,下面來看下具體用法:

標記位置

G 方法的第一個用法就是標記位置,例如:

G('begin');

表示把當前位置標記為 begin 標籤,並且記錄當前位置的執行時間,如果環境支援的話,還能記錄記憶體佔用情況。可以在任何位置呼叫 G 方法標記。

執行時間統計

標記位置後,我們就可以再次呼叫 G 方法進行區間統計了,例如:

G('begin');
// ...其他程式碼段G('end');
// ...也許這裡還有其他程式碼
// 進行統計區間echo G('begin','end').'s';

G(‘begin’,‘end’) 表示統計 begin 位置到 end 位置的執行時間(單位是秒),begin 必須是一個已經標記過的位置,如果這個時候 end 位置還沒被標記過,則會自動把當前位置標記為 end 標籤,輸出的結果類似於:

0.0056s

預設的統計精度是小數點後 4 位,如果覺得這個統計精度不夠,還可以設定例如:

G('begin','end',6).'s';

記憶體開銷統計

如果你的環境支援記憶體佔用統計的話,還可以使用 G 方法進行區間記憶體開銷統計(單位為 kb),例如:

echo G('begin','end','m').'kb';

第三個引數使用 m 表示進行記憶體開銷統計,輸出的結果可能是:

625kb

I 方法

正如你所見到的一樣,I 方法是 Thinkphp 眾多單字母函數中的新成員,其命名來自於英文 Input(輸入),主要用於更加方便和安全的獲取系統輸入變數,可以用於任何地方,用法格式如下:

I('變數型別.變數名',['預設值'],['過濾方法'])

變數型別是指請求方式或者輸入型別,包括:

方式說明
get獲取 GET 引數
post獲取 POST 引數
param自動判斷請求型別獲取 GET、POST 或者 PUT 引數
request獲取 REQUEST 引數
put獲取 PUT 引數
session獲取 $_SESSION 引數
cookie獲取 $_COOKIE 引數
server獲取 $_SERVER 引數
globals獲取 $GLOBALS 引數

注意:變數型別不區分大小寫。變數名則嚴格區分大小寫。

預設值和過濾方法均屬於可選引數。

L 方法

L 方法用於啟用多語言的情況下,設定和獲取當前的語言定義。

呼叫格式:

L('語言變數',['語言值'])

M 方法

M 方法用於範例化一個基礎模型類,和 D 方法的區別在於:

  • 不需要自定義模型類,減少 IO 載入,效能較好;
  • 範例化後只能呼叫基礎模型類(預設是 Model 類)中的方法;
  • 可以在範例化的時候指定表字首、資料庫和資料庫的連線資訊;

D 方法的強大則體現在你封裝的自定義模型類有多強,不過隨著新版 Think 框架的基礎模型類的功能越來越強大,M 方法也比 D 方法越來越實用了。

M 方法的呼叫格式:

M('[基礎模型名:]模型名','資料表字首','資料庫連線資訊')

R 方法

R 方法用於呼叫某個控制器的操作方法,是 A 方法的進一步增強和補充。

R 方法的呼叫格式:

R('[專案://][分組/]模組/操作','引數','控制器層名稱')

可以通過 R 方法在其他控制器裡面呼叫這個操作方法(一般 R 方法用於跨模組呼叫)

$data = R('User/detail',array('5'));

官方的建議是不要在同一層多太多呼叫,會引起邏輯的混亂,被公共呼叫的部分應該封裝成單獨的介面,可以藉助3.1的新特性多層控制器,單獨新增一個控制器層用於介面呼叫

S 方法

S 方法還支援對當前的快取方式傳入快取引數,例如:

S('data',$Data,3600,'File',array('length'=>10,'temp'=>RUNTIME_PATH.'temp/'));

T 方法

為了更方便的輸出模板檔案,新版封裝了一個 T 函數用於生成模板檔名。

T([資源://][模組@][主題/][控制器/]操作,[檢視分層])

T 函數的返回值是一個完整的模板檔名,可以直接用於 display 和 fetch 方法進行渲染輸出。

U 方法

U 方法用於完成對 URL 地址的組裝,特點在於可以自動根據當前的 URL 模式和設定生成對應的 URL 地址,格式為:

U('地址','引數','偽靜態','是否跳轉','顯示域名');

在模板中使用 U 方法而不是固定寫死 URL 地址的好處在於,一旦你的環境變化或者引數設定改變,你不需要更改模板中的任何程式碼。

推薦學習:《》

以上就是整理ThinkPHP字母函數指南的詳細內容,更多請關注TW511.COM其它相關文章!