使用thinkphp做開發的過程中的一些技巧總結,以後發現了還會繼續補充,也歡迎更多的朋友在下面留言補充。
(1)不要在模板中直接使用{$_GET.id}或者{$Think.get.id},因為{$_GET.id} {$Think.get.id} 這兩種方式都沒有任何過濾,容易被XSS。建議使用I方法,即:{:I('get.id')}
(2)在thinkphp中如果需要獲取數據庫中某個表的字段該怎麼辦呢?示例如下:
$user=M('user'); $fields=$user->getDbFields();
結果將返回一個由表字段組成的一個一維數組。
(3)數據修改的過程中如果我們只需要修改某個字段的值,就可以使用setField方法,而不需要每次都調用save方法,例如:
$user=M('user'); $user->where('id=2')->setField('username','www.phpernote.com');
(4)涉及到比較的情況下不一定非得使用if condition這種形式的,還可以按如下的形式來寫:
<eq name="web" value="phpernote">value</eq> // name 變量的值等於 phpernote 就輸出 <neq name="web" value="phpernote">value</neq> // name 變量的值不等於 phpernote 就輸出 <gt name="age" value="5">value</gt> // name 變量的值大於 5 就輸出 <egt name="age" value="5">value</egt> // name 變量的值大於等於 5 就輸出 <lt name="age" value="5">value</lt> // name 變量的值小於 5 就輸出 <elt name="age" value="5">value</elt> // name 變量的值小於等於 5 就輸出
(5)在thinkphp的刪除操作中可以不使用where直接使用delete來執行刪除,例如:
$User->delete('2,5');//刪除主鍵為2和5的數據
(6)關於thinkphp的幾個快速操作的函數的用法說明。
C操作,操作(動態)配置: 主要用於Action方法裡面
獲取:C('配置參數')
設置:C('配置參數 ',新值)
A操作,快速創建Action對象:
$action=A('User'); 等效於 $action=new UserAction();
D操作,快速創建模型數據對象:
$model=D('User'); 等效於 $model=new UserModel();
S操作,快速操作緩存方法
獲取:S('name')
設置:S('name','value');
刪除:S('name',NULL);
F操作,快速文件數據保存方法,使用方法與S操作一樣。
(7)Model命名時,默認要和數據庫裡的表名一致,如PhpernoteUserModel.class.php對應數據庫的名稱應該是 '前綴_phpernote_user',在程序代碼中的調用應該是:D('PhpernoteUser');
(8)開發的過程中如不需要進行緩存,可以在入口文件中進行如下定義:
define('NO_CACHE_RUNTIME',true);
(9)在開發的過程中如果需要知道一些額外的信息,可在配置文件中進行相應的定義,下面給出幾個比較常見的信息定義方式:
'SHOW_RUN_TIME'=>true,//運行時間顯示 'SHOW_ADV_TIME'=>true,//顯示詳細的運行時間 'SHOW_DB_TIMES'=>true,//顯示數據庫的操作次數 'SHOW_CACHE_TIMES'=>true,//顯示緩存操作次數 'SHOW_USE_MEM'=>true,//顯示內存開銷
(10)自定義Model類並在實例化模型(模型就是數據庫操作類)時使用,舉例如下:
a、在工程目錄下的Lib目錄下的Model目錄下建立一個IndexModel.class.php,然後裡面寫一個方法play,此方法內容體為循環輸出1至10。
b、那麼在Action中的方法裡,還可以這麼寫:
$index=M('index','IndexModel');//這裡可以加上自定義的模型類一起實例化 $index->play();
那麼會輸出1至10。
(11)使用thinkphp的過程中如果需要更改默認的模板後綴名,可以在配置文件中做如下定義:
'TMPL_TEMPLATE_SUFFIX' => '.dwt'//這裡就將模板後綴名改為了dwt