這篇文章為大家帶來了關於thinkphp的相關知識,其中主要介紹了關於字母函數的相關問題,包括了A、B、C、D方法等等,希望對大家有幫助。
推薦學習:《thinkphp學習》
用於在內部實例化控制器,呼叫格式:
// A('[项目://][分组/]模块','控制器层名称')$User = A('User');$User = A('Admin://User');
實例化控制器後,就可以呼叫該控制器中的方法,不過需要注意的情況是,在跨項目呼叫的情況下,如果你的操作方法有針對當前控制器的特殊變數操作,會有一些未知的問題,所以,一般來說,官方建議需要公共呼叫的控制器層單獨開發,不要有太多的依賴關係。
這是隨著行為應運而生的新生函數,可以執行某個行為,例如
B('app_begin');
就是在專案開始之前,執行這個行為定義的所有函數。支援2 個參數,第二個參數支援需要接受一個數組,例如
B('app_begin', ["name" => "tdweb","time"=>time()]);
C 方法是Think 用於設定、獲取,以及保存配置參數的方法,使用頻率較高。
動態設定配置參數,配置參數不區分大小寫,但是建議保持統一大寫的配置定義規格。
C('DB_NAME','think');
支援二級配置參數的設置,配置參數不建議超過二級。例如:
C('USER.USER_ID',8);
如果要設定多個參數,可以使用批次設置,例如:
$config['user_id'] = 1;$config['user_type'] = 1;C($config);
如果傳入的設定參數為空,表示取得全部的參數:
$config = C();
D 方法應該是用的比較多的方法了,用於實例化自定義模型類,是Think 框架對Model 類實例化的一種封裝,並實現了單例模式,支援跨項目和分組調用,調用格式如下:
D('[项目://][分组/]模型','模型层名称')
方法的返回值是實例化的模型物件。
D 方法可以自動偵測模型類,如果存在自訂的模型類,則實例化自訂模型類,如果不存在,則會實例化Model 基類,同時對於已實例化過的模型,不會重複去實例化。
D 方法最常用的用法就是實例化目前專案的某個自訂模型,例如:
// 实例化 User 模型$User = D('User');
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('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 方法是 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('语言变量',['语言值'])
M 方法用于实例化一个基础模型类,和 D 方法的区别在于:
D 方法的强大则体现在你封装的自定义模型类有多强,不过随着新版 Think 框架的基础模型类的功能越来越强大,M 方法也比 D 方法越来越实用了。
M 方法的调用格式:
M('[基础模型名:]模型名','数据表前缀','数据库连接信息')
R 方法用于调用某个控制器的操作方法,是 A 方法的进一步增强和补充。
R 方法的调用格式:
R('[项目://][分组/]模块/操作','参数','控制器层名称')
可以通过 R 方法在其他控制器里面调用这个操作方法(一般 R 方法用于跨模块调用)
$data = R('User/detail',array('5'));
官方的建议是不要在同一层多太多调用,会引起逻辑的混乱,被公共调用的部分应该封装成单独的接口,可以借助3.1的新特性多层控制器,单独添加一个控制器层用于接口调用
S 方法还支持对当前的缓存方式传入缓存参数,例如:
S('data',$Data,3600,'File',array('length'=>10,'temp'=>RUNTIME_PATH.'temp/'));
为了更方便的输出模板文件,新版封装了一个 T 函数用于生成模板文件名。
T([资源://][模块@][主题/][控制器/]操作,[视图分层])
T 函数的返回值是一个完整的模板文件名,可以直接用于 display 和 fetch 方法进行渲染输出。
U 方法用于完成对 URL 地址的组装,特点在于可以自动根据当前的 URL 模式和设置生成对应的 URL 地址,格式为:
U('地址','参数','伪静态','是否跳转','显示域名');
在模板中使用 U 方法而不是固定写死 URL 地址的好处在于,一旦你的环境变化或者参数设置改变,你不需要更改模板中的任何代码。
推荐学习:《thinkphp框架》
以上是整理ThinkPHP字母函數指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!