搜尋
首頁php框架ThinkPHPthinkphp5和3的差別

thinkphp5和3的差別

Jul 01, 2019 am 11:33 AM
thinkphp

thinkphp5和3的差別

首先聲明本章節並非是指導升級舊的專案到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 &#39;hello,thinkphp!&#39;;
   }
}

5.0版本控制器寫入法

namespace app\index\controller;class Index 
{    public function index()
   {        return &#39;hello,thinkphp!&#39;;
   }
}

3.2版本控制器命名

IndexController. class.php

5.0版本控制器命名

Index.php

**在控制器中正確的輸出模板**

5.0在控制器中輸出模板,使用方法如下:

如果你繼承think\Controller的話,可以使用:

return $this->fetch(&#39;index/hello&#39;);

如果你的控制器沒有繼承think\Controller的話,使用:

return view(&#39;index/hello&#39;);

模型

如果非要比較與舊版本的改進,模型被分成資料庫、模型、驗證器三部分,分別對應M方法、模型、自動驗證,同時均有所加強,以下做簡單介紹。

資料庫

5.0的資料庫查詢功能增強,原先需要透過模型才能使用的鍊式查詢可以直接透過Db類別調用,原來的M函數呼叫可以改用db函數,例如:

3.2版本

M(&#39;User&#39;)->where([&#39;name&#39;=>&#39;thinkphp&#39;])->find();

5.0版本

db(&#39;User&#39;)->where(&#39;name&#39;,&#39;thinkphp&#39;)->find();

模型

#新版的模型查詢增加了靜態方法,例如:

User::get(1); 
User::all();User::where(&#39;id&#39;,&#39;>&#39;,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_DENAME CONTROLLER_NAME ACTION_NAME APP_NSPSPACE APP_DENAME CONTROLLER_NAME ACTION_NAME APP_NSPSPACE#PUG_DENAME CONTROLLER_NAME ACTION_NAME APP_NSPSPACE#PUG_DENAME CONTLE請求章節」。

註:再次說明本章節僅為先前使用3.X版本開發者快速理解5.0所寫,具體5.0的功能還需要開發者通讀手冊。

助手函數5.0助手函數與3.2版本的單一字母函數比較如下:

C    config    

#E    exception    

G    debug    

L    lang    

T    

D    model    

M    db    

A    controller    

R   

##W widget    

S    cache    

F    廢除    

更多ThinkPHP相關技術文章,請訪問

ThinkPHP使用教程

欄目進行學習!

以上是thinkphp5和3的差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境