標籤:lock 順序 環境變數 css 大量 資訊 attr 手冊 空間
升級指導
http://www.kancloud.cn/manual/thinkphp5/163239
從V5.0.1升級到V5.0.2
從V5.0.1升級到V5.0.2需要注意如下事項:
下列模型屬性和方法由原來的靜態(static)定義改為動態定義:
- 彙總模型的
relationModel屬性
- Model類的
useGlobalScope 屬性
- 虛刪除屬性
deleteTime屬性
- 全域查詢範圍方法
base改為動態方法
原來的join方法和view方法的第一個參數正常化,支援下面三種用法:
用法一:[ ‘帶首碼表名‘=>‘別名‘ ]用法二:‘帶首碼表名 別名‘用法三:‘不帶首碼的表名‘
如果有其它用法注意調整,下面的用法不再支援:
‘不帶首碼表名 別名‘
如果使用了空操作方法,無需給_empty方法添加任何參數,當前操作名的擷取直接使用請求對象的action函數擷取。
從V5.0升級到V5.0.1
從V5.0升級到V5.0.1需要注意如下事項:
- 擴充配置參數
extra_config_list廢棄,除了資料庫配置之外的擴充配置放入application/extra目錄自動識別載入。
- 模型的
field屬性無需配置欄位類型
- 查詢構建器使用手動參數綁定的時候不要使用
?號佔位綁定,使用具名引數綁定
- 如果使用了
file_get_contents(‘php://input‘)請改為Request對象的getInput() 方法擷取
- 檔案
File類取消md5()和sha1()方法,請使用hash(‘md5‘)和hash(‘sha1‘)方法替代
從V5.0RC4升級到V5.0
可以輕鬆的從RC4版本升級到正式版,不過請注意如下事項:
- 如果定義了路由映射(靜態路由)的則改為普通路由規則定義
- 定義了路由規則之後,原來的URL地址被禁止訪問,請注意檢查是否還有這種情況
- 如果配置了url_deny_suffix參數,改為路由的deny_ext參數設定
- 模型save方法傳回值改為影響的記錄數,並且方法參數中取消了getId參數
- Request對象controller方法返回駝峰控制器名,如果使用該方法渲染模板的話,請使用Loader::parseName(Request::instance()->controller())轉換
- 如果使用了Sqlsrv驅動則,原來自動轉換小寫資料表欄位預設不對資料表欄位進行小寫轉換,請更改PDO::ATTR_CASE參數
- 如果部署在sae 需要使用sae擴充包
- 如果使用了Sqlsrv/Orace/Firebird驅動,則自行添加原來的驅動檔案
- 配置參數讀取的時候取消環境變數判斷,需要讀取環境變數的時候改用Env類
- 環境變數定義檔案更改為 .env 由原來的PHP數組改為ini格式定義(支援數組方式)
- 狀態配置和擴充配置的載入順序調整 便於狀態設定檔中可以更改擴充配置的參數
- 取消網域名稱綁定到路由分組功能
- 控制器類的success和error方法url參數支援傳入Null 字元串,則不做任何處理
關鍵幾點:
預設範本目錄全部是小寫+下滑線規範;
控制器類的success、error和redirect方法無需使用return;
模型的save方法傳回值更改為影響的記錄數,而非主鍵,使用model->id方式擷取主鍵;
路由定義後不能再使用原來URL地址訪問;
從V3.2版本升級到V5.0
3.2版本無法直接升級到5.0版本,這裡只是給出了升級指導思想和為了使用3.X版本的開發人員更快的熟悉並上手這個全新的版本。同時也強烈建議開發人員拋棄之前舊的思維模式,因為5.0是一個全新的顛覆重構版本。
需要摒棄的3.X舊思想URL的變動
首先對3.X的不嚴謹給開發人員們帶來的不正確的引導表示歉意,在5.0版本正式廢除類似/id/1方式 可以通過‘get’擷取到‘id’的方法,嚴格來講這樣的url是不屬於$_GET的,現在可以通過‘param’擷取,具體使用可以通過請求部分查詢。
模型的變動
新版的模型查詢返回預設‘對象’,系統預設增加了‘toArray‘方法,許多開發人員在‘all‘或‘select‘嘗試使用‘toArray‘來轉換為數組,在此希望開發人員能理解‘對象’的概念,嘗試使用‘對象’進行資料的使用,或者使用‘db‘方法進行資料庫的操作,也提醒一下部分‘濫用’‘toArray‘的開發人員,‘all‘或‘select‘結果是對象的數組集合,是無法使用‘toArray‘進行轉換的。
新版變化命名規範
- 目錄和檔案名稱採用‘小寫+底線’,並且以小寫字母開頭;
- 類庫、函數檔案統一以.php為尾碼;
- 類的檔案名稱均以命名空間定義,並且命名空間的路徑和類庫檔案所在路徑一致(包括大小寫);
- 類名和類檔案名稱保持一致,並統一採用駝峰法命名(首字母大寫)
函數
- 系統已經不依賴任何函數,只是對常用的操作封裝提供了助手函數;
- 單字母函數廢棄,預設系統載入助手函數,具體參考上一個章節‘助手函數’;
路由
5.0的URL訪問不再支援普通URL模式,路由也不支援正則路由定義,而是全部改為規則路由配合變數規則(正則定義)的方式,具體這裡不再贅述。
控制器
控制器的命名空間有所調整,並且可以無需繼承任何的控制器類。
- 應用類庫的命名空間統一為app(可修改)而不是模組名;
- 控制器的類名預設不帶
Controller尾碼,可以配置開啟controller_suffix參數啟用控制器類尾碼;
- 控制器操作方法採用
return方式返回資料,而非直接輸出;
- 廢除原來的操作前後置方法;
版本對比
3.2版本控制器寫法
<?phpnamespace Home\Controller;use Think\Controller;class IndexController extends Controller { public function hello() { echo ‘hello,thinkphp!‘; }}
5.0版本控制器寫法
namespace app\index\controller;class Index { public function index() { return ‘hello,thinkphp!‘; }}
3.2版本控制器命名
IndexController.class.php
5.0版本控制器命名
Index.php
怎麼才能在控制器中正確的輸出模板
5.0在控制器中輸出模板,使用方法如下:
如果你繼承think\Controller的話,可以使用:
return $this->fetch(‘index/hello‘);
如果你的控制器沒有繼承 think\Controller的話,使用:
return view(‘index/hello‘);
模型
如果非要對比與舊版本的改進,模型被分為資料庫、模型、驗證器三部分,分別對應M方法、模型、自動驗證,同時均有所加強,下面做簡單介紹。
資料庫
5.0的資料庫查詢功能增強,原先需要通過模型才能使用的鏈式查詢可以直接通過Db類調用,原來的M函數調用可以改用db函數,例如:
3.2版本
M(‘User‘)->where([‘name‘=>‘thinkphp‘])->find();
5.0版本
db(‘User‘)->where(‘name‘,‘thinkphp‘)->find();
模型
新版的模型查詢增加了靜態方法,例如:
User::get(1); User::all();User::where(‘id‘,‘>‘,10)->find();
模型部分增強了很多功能,具體請查閱“模型章節”。
自動驗證
對比舊的版本,可以理解為之前的自動驗證且不同於之前的驗證;
ThinkPHP5.0驗證使用獨立的\think\Validate類或者驗證器進行驗證,不僅適用於模型,在控制器也可直接調用,具體使用規則請參考“驗證”章節,這裡不再贅述。
設定檔
新版對配置很多的配置參數或者配置層次都和之前不同了,建議大家要麼看看代碼,要麼仔細通讀下官方的開發手冊,不要因為配置的問題浪費自己一整天的時間。
異常
5.0對錯誤零容忍,預設情況下會對任何層級的錯誤拋出異常,並且重新設計了異常頁面,展示了詳盡的錯誤資訊,便於調試。
系統常量的廢棄
5.0版本相對於之前版本對系統變化進行了大量的廢棄,使用者如果有相關需求可以自行定義
下面是廢除常量
REQUEST_METHOD IS_GET IS_POST IS_PUT IS_DELETE IS_AJAX __EXT__ COMMON_MODULE MODULE_NAME CONTROLLER_NAME ACTION_NAME APP_NAMESPACE APP_DEBUG MODULE_PATH等
部分常量可以在Request裡面進行擷取,具體參考“請求章節”。
再次說明本章節僅僅為之前使用3.X版本開發人員快速理解5.0所寫,具體5.0的功能還需要開發人員通讀手冊。
助手函數
5.0助手函數和3.2版本的單字母函數對比如下:
3.2版本 |
5.0版本 |
| C |
config |
| E |
exception |
| G |
debug |
| L |
lang |
| T |
廢除 |
| I |
input |
| N |
廢除 |
| D |
model |
| M |
db |
| A |
controller |
| R |
action |
| B |
廢除 |
| U |
url |
| W |
widget |
| S |
cache |
| F |
廢除 |
上一篇:助手函數
ThinkPHP升級指導