thinkphp3.1的新功能
<?php
/*
?* TP新功能:
+----------------------------------------------------------------------------------------+
tp操作中的缺陷解決:
只需要配置下:ACTION_SUFFIX參數即可.
'ACTION_SUFFIX'=>'Action';
也就是給操作方法定義后綴,如果配置了上面的參數,我們實際的調用方法就在操作名后面加上了Action后綴了,
?? ?http://localhost/index.php/User/list
=======================================================
class UserAction extends Action{
?? ?public function listAction(){
?? ??? ?
?? ?}
}
+----------------------------------------------------------------------------------------+
頁面壓縮輸出支持:
大多數瀏覽器都支持了頁面的壓縮支持,通過壓縮來輸出頁面,頁面大小可以減少30%.由于3.0沒有內置頁面壓縮功能輸出功能,所以一般在入口中添加:
ob_start('ob_gzhandler');
但是由于服務器環境不同,有時候這個配置和php.ini中的zlib壓縮配置沖突,3.1內置了頁面壓縮功能,不需要再手動添加ob_gzhandler代碼,增加了OUTPUT_ENCODE配置參數,并支持檢測zlib_ouput_compression.
框架默認會進行頁面壓縮輸出,并且自動檢測zlib.output_compression配置,如果php.ini里面的zlib.output_compression是否開啟狀態,則仍然以服務器環境的頁面壓縮方式進行頁面壓縮.\
相關代碼就一行:
if(!ini_get('zlib.output_compression') && C('OUTPUT_ENCODE')) ob_start('ob_gzhandler');
在個別特殊的環境下,如果出現了類似下面的錯誤提示:
output_handler "ob_gzhandler" conflicts with "zlib.output_compression"
一般是你的服務器配置了其他的壓縮方式導致了沖突,這個時候你想關閉OUTPUT_ENCODE,即
'OUTPUT_ENCODE'=>false
+----------------------------------------------------------------------------------------+
TP函數:M方法
M方法用于實例化一個基礎模型類,和D方法的區別:
1.不需要自定義模型類,減少IO加載,性能較好
2.實例化后只能調用基礎模型類,性能較好;
3.可以在實例化的時候指定表前綴,數據庫和數據庫的連接信息
D方法的強大則體現你封裝的自定義的模型類有多強,不過隨著tp框架的基礎類的功能增加:
M比D也更加的給力:
M('[基礎模型類:]模型名','數據庫表前綴','數據庫鏈接信息')
用法
a.實例化基礎模型(model)類
$User=M('User');
//執行其他數據庫操作
$User->select();
只能完成基本的CRUD,無法寫入相關的業務邏輯
?? ?$User=M('User');
其實等效于:
?? ?$User=new Model('User');
表示操作think_user表.
?? ?M方法和D方法一樣也有單例功能,多次調用并不會重復實例化.M方法的模型名參數在轉換成數據表的時候會自動轉為小寫,也就是說TP的數據庫命名規范是全小寫的格式.
b.實例化其他公共模型類:
第一種方法因為沒有模型類的定義,因此很難封裝一些額外的邏輯方法,不過大多數情況下,也許只是需要擴展一些通用的邏輯,那么就可以嘗試下面的一種方法.
$User=M('CommonModel:User');
改用方法其實就等效于:
$User=new CommonModel('User');
因為系統的模型類都能夠自動加載,因此我們不需要在實例化之前手動進行類庫導入操作.模型類CommonModel必須繼承Model.我們可以在CommonModel類里面定義一些通用的邏輯方法,就可以省去為每個數據表定義具體的模型類,如果你的項目已經超過了100個數據表了,而大多數情況下都是一些基本的CURD操作的方法的話,只是個別需要一些復雜的業務邏輯的話需要封裝,那么第一種和第二種是一個不錯的選擇.
+----------------------------------------------------------------------------------------+
傳入表前綴,數據庫和其他信息
M方法有三個參數,第一個參數是模型名稱(可以包含基礎模型類和數據庫),第二個參數用于設置數據表的前綴(留空則取當前項目配置的表前綴),第三個參數用于設置當前使用的數據庫鏈接信息(留空則取當前配置數據庫連接信息)
轉載于:https://www.cnblogs.com/sgsheg/archive/2012/09/22/2698314.html
總結
以上是生活随笔為你收集整理的thinkphp3.1的新功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 测试:mock对象
- 下一篇: 要活多久才能赚回你交的养老金