1. 程式人生 > >ThinkPHP單字母函式整理 A函式 B函式 C函式 D函式 F函式 L函式 R函式 S函式 U函式

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程式碼

  1. <?php  
  2. ?("@.Action.Index");  
  3. //匯入本專案目錄下Action目錄下的Index.class.php檔案。  
  4. class TestAction extends Action{  
  5.     public function index()  
  6.     {  
  7.         $index=new IndexAction();//例項化IndexAction  
  8.         echo $index->myHello();//呼叫myHello()方法  
  9.     }  
  10. }  
  11. ?>  

那麼,如果我們用A函式,怎麼寫呢?

 

PHP程式碼

  1. <?php  
  2. class TestAction extends Action{  
  3.     public function index()  
  4.     {  
  5.         $index=A("Index");  
  6.         echo $index->myHello();  
  7.     }  
  8. }  
  9. ?>  

 

  呵呵,少寫很多程式碼吧。當然,這還不是最偷懶的方法,請看下邊的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程式碼

  1. <?php  
  2. class TestAction extends Action{  
  3.     public function index()  
  4.     {  
  5.         $index=R("Index","myHello");  
  6.         echo $index;  
  7.     }  
  8. }  
  9. ?>  

 呵呵,是不是更簡單?

 

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了