ThinkPHP使用技巧

2021-06-26 00:11:41 字數 3857 閱讀 7015



1、讓runtime下的檔案格式化:入口檔案處:define('strip_runtime_space',false);

2、開發時不進行快取:入口檔案處:define('no_cache_runtime',true);

3、thinkphp支援四種訪問模式:a:普通模式 b:pathinfo模式 c:rewrite模式 d:相容模式 在配置檔案中用url_model=0(1、2、3)來表示。

4、改變分隔線/:url_pathinfo_depr。預設為:/

5、跨模組《控制器》呼叫模板方法:模組《控制器名:模板名(不加字尾)>,如$this->display('index:tt');

6、跨**呼叫模板方法:假如tpl下有skin**,該**下有user資料夾,該資料夾下有sg.html,那麼$this->display('skin@user:sg');就跨**呼叫了。

7、全路徑輸出:在工程目錄《非專案目錄》下,建乙個public資料夾,這就是公共檔案,可以將js檔案放在這裡供前後臺共用。現在假設public資料夾下有乙個ss.html檔案,那麼

$this->display('./public/ss.html');就輸出公共檔案中的ss.html模板。

8、display的引數:依次為:模板名,編碼格式,mimie。如:$this->display('./public/ss.html','utf-8','text/xml');

9、系統常量:

__url__  //代表當前操作位址

__action__  //代表當前操作位址

__self__  //代表當前的url位址

__current__  //代表當前模組的模板目錄

__public__  //代表整個專案的公用目錄

__tmpl__  //代表整個專案的模板目錄,如tpl/default/

action_name  //當前操作名稱

cache_path  //專案模板快取目錄

10、配置檔案中一些有用的引數:

'show_run_time'=>true,//執行時間顯示

'show_adv_time'=>true,//顯示詳細的執行時間

'show_db_times'=>true,//顯示資料庫的操作次數

'show_cache_times'=>true,//顯示快取操作次數

'show_use_mem'=>true,//顯示記憶體開銷

11、halt();//中斷程式執行。

12、dump是thinkphp裡面預定義好的乙個函式,具有顯示更清晰的作用。

13、讀取配置檔案其中資訊:c,如:$a=c('db_host');這種情況可用於在後台中向管理員顯示伺服器ip,資料庫資訊等。

14、自定義model類並在例項化模型《模型就是資料庫操作類》時使用,如:

a、在工程目錄下的home《前台資料夾》下的lib下的model下建立乙個indexmodel.class.php,然後裡面寫乙個方法play,此方法迴圈輸出1至10。

b、在action中的方法裡:

$index=m('index','indexmodel'); //這裡可以加上自定義的模型類一起例項化

$index->play();

那麼會輸出1至10。

15、例項化模型可以用d也可以用m,m是快速例項化,且可帶參,如m('user','play');//play是乙個對應的模型類。也可以$user=new usermodel();

16、d方法可以自動檢測模型類,不存在時它會丟擲乙個異常。同時對於已例項化過的模型,不會去重複例項化。預設的d方法只能支援呼叫當前專案(應用)下面的模型。

17、thinkphp的分組功能:如果現在想在前台實合例化後台模型,那麼:

$admin=d('admin.user');

dump($admin->find());

將輸出後台模型資料,這就是分組功能。

18、commonaction中的_initialize方法讓每乙個繼承它的類的每個方法都要經過_initialize。think_access表要加個pid(int11)字段。四張表是必須的,但是還需要一張user表,裡面欄位自定。

19、解決thinkphp中使用smarty然後include方法無效的辦法:不是不支援,但是路徑沒有那麼智慧型,比如tpl的default下的task模組下有一test.html檔案,那麼,請用<>以下為引用的話:

include所包含的檔案由file屬性來指定,路徑相對於template_dir,也就是所如果你在使用smarty的時候設定模板路徑template_dir假設為tpl,那麼file的檔案就應該相對於tpl檔案來取,就你的例子

的話,那麼header.html要放在tpl下的public資料夾下。

其實,在smarty類中把include函式改一下讓它輸出路徑,那麼這問題將很好查詢。

20、關聯模型:嘗試了很多次,它一直提示找不到relation方法,就在準備放棄那一秒,奇蹟真的出現了:它可以了,配置還是那個配置,真的未改動,那個配置也沒什麼懷念的,還是記錄一下吧:

usermodel.class.php如下:

<?php

class usermodel extends relationmodel

?>

indexaction.class.php如下:

public function index()

22、thinkphp中判斷為空的方法:

name已經賦值name還沒有賦值

23、thinkphp原生模板中if語句中session判斷的問題:

正確使用如下:

收藏此人才

正解:由於 if 標籤的 condition 屬性裡面基本上使用的是 php 語法,盡可能使用判斷標籤和 switch 標籤會更加簡潔,原則上來說,能夠用 switch 和比較標籤解決的盡量不用 if 標籤完成。因為 switch 和比較標籤可以使用變數調節器和系統變數。如果某些特殊的要求下面, if 標籤仍然無法滿足要求的話,可以使用原生 php **或者 php 標籤來直接書寫**

。。。。。  這個沒試,但已明白

這個是可以的

24、分組模式配置:

//分組模式配置

'default_group'=>'index',

25、_initialize這個函式不太好記,臥槽,記這裡吧。

26、 thinkphp開發時關閉快取的方法:

因在開發中需要經常修改,從而要經常刪除快取,才能看到效果。

所以為了開發的方便,可以把快取給去除。

1.找到\thinkphp\common\convention.php和\thinkphp\common\debug.php

2.開啟這兩個檔案找到你想要的設定即可。

debug.php中

'tmpl_cache_on'=>false,      // 預設開啟模板快取

convention.php中'

tmpl_cache_on'   => false,  // 預設開啟模板編譯快取 false 的話每次都重新編譯模板

'action_cache_on'  => false,  // 預設關閉action 快取

'html_cache_on'   => false,   // 預設關閉靜態快取

27、中文字元長度擷取:,這是支援中文的,很好用。

28、thinkphp2.1中,如果想開啟debug後顯示頁面執行時間,那麼要在頁面中加入才可以的。

29、html壓縮:

tmpl_strip_space

這個不是壓縮 只是去空白和注釋 

30、模板字尾設定:'tmpl_template_suffix' => '.tpl'

thinkPHP 模板的使用技巧(十三)

原文 thinkphp 模板的使用技巧 十三 模板的使用技巧 頁面跳轉 模板包含 模板渲染 模板的繼承 頁面跳轉 我要跳轉到首頁面,用這個方法!一 模板包含 完整路徑 匯入當前模組下的read操作模板 包含public模組下的header操作模板,注意不需要header控制器支援,只要public下...

thinkPHP 模板的使用技巧(十三)

原文 thinkphp 模板的使用技巧 十三 模板的使用技巧 頁面跳轉 模板包含 模板渲染 模板的繼承 頁面跳轉 我要跳轉到首頁面,用這個方法!一 模板包含 完整路徑 匯入當前模組下的read操作模板 包含public模組下的header操作模板,注意不需要header控制器支援,只要public下...

總結ThinkPHP使用技巧經驗分享 二

迴圈輸出 volist 還有別名 iterate 模版賦值 user d user list user findall this assign list list 模版定義 注意 name 和 id 表示的含義 輸出 list 的第 5 15 條記錄 輸出偶數記錄 輸出 key.子迴圈輸出 swit...