ThinkPHP升級指導

來源:互聯網
上載者:User

標籤: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升級指導

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.