ThinkPHP單字母函式整理 A函式 B函式 C函式 D函式 F函式 L函式 R函式 S函式 U函式
有人不太喜歡TP這種單字母函式,其實這也是TP的一個特色,如果理解了這些函式的作用,不管是背,還是寫,都是非常方便的,接下來我們以字母順序開始。
A函式(基本是Action的簡寫)
A函式是用來例項化我們的Action類的,例如我們的程式有2個Action分別是IndexAction和TestAction,在 IndexAction中有個myHello方法能夠輸出hello world,如果我也想在TestAction中也輸出同樣一段文字怎麼辦?最原始的方法首先我們匯入IndexAction.class.php這個檔案,然後new IndexAction,最後呼叫myHello方法才行。
程式碼一般為 :
PHP程式碼
- <?php
- ?("@.Action.Index");
- //匯入本專案目錄下Action目錄下的Index.class.php檔案。
- class TestAction extends Action{
- public function index()
- {
- $index=new IndexAction();//例項化IndexAction
- echo $index->myHello();//呼叫myHello()方法
- }
- }
- ?>
那麼,如果我們用A函式,怎麼寫呢?
PHP程式碼
- <?php
- class TestAction extends Action{
- public function index()
- {
- $index=A("Index");
- echo $index->myHello();
- }
- }
- ?>
呵呵,少寫很多程式碼吧。當然,這還不是最偷懶的方法,請看下邊的R()函式,就知道什麼是偷懶的極致了。
B函式
這是隨著行為應運而生的新生函式,可以執行某個行為,例如B('app_begin');就是在專案開始之前,執行這個行為定義的所有函式,支援2個引數,第二個引數支援需要接受一個數組,例如B('app_begin',array("name"=& gt;"tdweb","time"=>time()));這樣。
C函式
獲取配置值,這個大家用的應該不少。雖然使用方便,但是C函式無疑是一個非常強大的函式。
獲取值:
獲取所有設定:C(); 不傳遞任何引數,返回一個包含所有設定的陣列。
獲取指定配置:C('URL_MODEL') 這樣就能得到URL_MODEL的配置資訊
獲取指定二維陣列配置:C("array.name"),這樣就返回陣列array下的key為name所對應的值
設定值:
為二維陣列賦值C("array.name","value"),原理同上(獲取array.name的值),後邊的value是值
批量賦值:
$test=array("URL_MODEL"=>1,"THIN_MODEL"=>true");
C($test);
這樣直接將數組裡的值賦值了
判斷是否賦值:
C("?URL_MODEL")這樣前邊加個"?",如果已經賦值,則返回true
需要說明的是,這裡雖然更改了配置的值,但是僅僅是這個頁面做了更改,到下個頁面就不起作用了,如果想改就永久更改,那麼需要配合F函式,將配置檔案寫入config.php才行。
D函式
DAO函式應該是我們寫程式用的最多的函數了。和A函式類似,如果不使用D函式,就需要匯入Model,然後new Model,剩下都是一樣的。
但是D函式有2個有點,一是如果之前例項化過這個Model,那麼就不再例項化了,剩資源;二是方便除錯,如果不存在 這個Model,會丟擲TP異常,非常人性化。
如果訪問本專案的Model直接D("Model名稱");就可以了,如果打算跨專案訪問,就使用 D("Model名稱","專案名稱");其他的就沒什麼說的了
F函式
快速讀取和儲存檔案資料
快速儲存資料:F("mydata","這裡是要儲存的資料"),這樣就在專案Data目錄下儲存了一個名叫mydata.php的檔案,裡邊的內容是該函式的第二個引數。
指定儲存時間 :F("mydata","這裡是要儲存的資料","60"),這樣,如果下次再訪問,間隔大於60秒則刪除次快取檔案。
指定儲存目錄:F("mydata","這裡是要儲存的資料","60",DATA_PATH) ,這樣就指定儲存在data目錄下
立即刪除快取:F("mydata",null),第二個引數傳遞一個null值,這樣就刪除了mydate這個快取
讀取快取資料:F("mydata"),這樣就讀取這個快取了
L函式
語言定義函式,L("intro")獲取定義成intro的語言,l("intro","介紹")為intro賦值,關於這個賦值的長久性,道理同C函式一樣。
R函式
還記得我們的A函式吧,如果僅僅想執行某個方法,其實用R函式更方便,剛才的可以替換成
PHP程式碼
- <?php
- class TestAction extends Action{
- public function index()
- {
- $index=R("Index","myHello");
- echo $index;
- }
- }
- ?>
呵呵,是不是更簡單?
S函式
全域性快取讀寫函式,和C類似,不過是直接寫成檔案的哦,寫在Temp目錄下,不過在快取有一點需要注意,如果快取名稱是aaa,那麼快取生成的檔名稱就是md5("aaa")的值,值得注意。
U函式
U函式是很強大的一個函式,它主要是進行URL組裝,同時支援不同模式和路由
例如:
取得當前模組的Action地址 :U("/nowMethod");
取得當前模組的Action地址,並傳遞引數:U("/nowMethod?params=test");
(如果不習慣上邊那種方式,可以使用U("/nowMethod",array("params"=>"test");這樣的陣列方式傳遞引數,效果是一樣的)
訪問其他模組的方法:U("Other/otherMethod"),這樣就是訪問Other模組下的otherMethod方法
跨專案訪問:U("appname://Other/otherMethod");
使用路由訪問:U("appName://[email protected]/actionName?params");
另外,如果想直接跳轉,那麼就在第二個引數寫1,例如U("/nowMethod",1);這樣就直接調轉到指定URL了