有人不太喜歡TP這種單字母函數,其實這也是TP的一個特色,如果理解了這些函數的作用,不管是背,還是寫,都是非常方便的,接下來我們以字母順序開始。
A函數(基本是Action的簡寫)
A函數是用來實例化我們的Action類的,例如我們的程序有2個Action分別是IndexAction和TestAction,在 IndexAction中有個myHello方法能夠輸出hello world,如果我也想在TestAction中也輸出同樣一段文字怎么辦?最原始的方法首先我們導入IndexAction.class.php這個文件,然后new IndexAction,最后調用myHello方法才行。
代碼一般為 :
- <?php
- ?("@.Action.Index");
- //導入本項目目錄下Action目錄下的Index.class.php文件。
- class TestAction extends Action{
- public function index()
- {
- $index=new IndexAction();//實例化IndexAction
- echo $index->myHello();//調用myHello()方法
- }
- }
- ?>
那么,如果我們用A函數,怎么寫呢?
- <?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
- 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://routeName@moduleName/actionName?params");
另外,如果想直接跳轉,那么就在第二個參數寫1,例如U("/nowMethod",1);這樣就直接調轉到指定URL了