TP5和TP3.2區別
5.0版本和之前版本的差異較大,本篇對熟悉3.2版本的使用者給出了一些5.0的主要區別。
URL和路由
5.0的URL訪問不再支援普通URL模式,路由也不支援正則路由定義,而是全部改為規則路由配合變數規則(正則定義)的方式:
主要改進如下;
增加路由變數規則;
增加組合變數支援;
增加資源路由;
增加路由分組;
增加閉包定義支援;
增加MISS路由定義;
支援URL路由規則反解析;
請求物件和響應物件
5.0新增了請求物件Request和響應物件Response,Request統一處理請求和獲取請求資訊,Response物件負責輸出客戶端或者瀏覽器響應。
模組和控制器
控制器的名稱空間有所調整,並且可以無需繼承任何的控制器類。
應用名稱空間統一為app(可定義)而不是模組名;
控制器的類名預設不帶Controller字尾,可以配置開啟use_controller_suffix引數啟用控制器類字尾;
控制器操作方法採用return方式返回資料 而非直接輸出;
廢除原來的操作前後置方法;
增加beforeActionList屬性定義前置操作;
支援任意層次的控制器定義和訪問;
URL訪問支援自動定位控制器;
資料庫
5.0的資料庫查詢功能增強,原先需要通過模型才能使用的鏈式查詢可以直接通過Db類呼叫,原來的M函式呼叫可以改用db函式,例如:
3.2版本
M('User')->where(['name'=>'thinkphp'])->find();
5.0版本
db('User')->where('name','thinkphp')->find();
主要改進如下:
支援鏈式查詢操作;
資料查詢支援返回物件、陣列和PDOStatement物件;
資料集查詢支援返回陣列和Collection物件;
增加查詢構造器,查詢語法改變;
支援閉包查詢;
支援分塊查詢;
支援檢視查詢;
增加SQL監聽事件;
模型
5.0的模型變化是最大的,基本上模型是完全面向物件的概念,包括關聯模型,模型類的字尾不再帶Model,直接由名稱空間區分,原來的D函式呼叫改為model函式,並且必須建立對應的模型類,例如:
3.2版本
D('User')->where(['name'=>'thinkphp'])->find();
5.0版本
model('User')->where('name','thinkphp')->find();
主要改進包括:
重構關聯模型;
支援聚合模型;
廢除檢視模型(改為資料庫的檢視查詢方法);
模型的擴展采用Trait機制;
增加獲取器和修改器;
增加時間戳自動寫入;
增加型別欄位轉換;
陣列訪問支援;
JSON序列化支援;
自動驗證和自動完成
5.0的資料自動驗證和自動完成和3.2版本區別較大,5.0的資料驗證採用驗證器定義並且通過think\Validate類進行統一的驗證。自動完成則通過在模型裡面定義修改器來完成。
異常
5.0對錯誤零容忍,預設情況下會對任何級別的錯誤丟擲異常(但可以在應用公共檔案中設定錯誤級別),並且重新設計了異常頁面,展示了詳盡的錯誤資訊,便於除錯。
除錯和日誌
5.0的頁面Trace強化,支援瀏覽器控制檯檢視Trace資訊。
5.0的日誌驅動增加Socket方式,採用SocketLog支援遠端除錯。
常量
5.0版本廢棄了原來的大部分常量定義,僅僅保留了框架的路徑常量定義,其餘的常量可以使用App類或者Request類的相關屬性或者方法來完成,或者自己重新定義需要的常量。
廢除的常量包括:
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
函式
5.0版本核心框架不依賴任何自定義函式,但仍然封裝了一些常用功能到助手函shu
相關推薦
TP5和TP3.2區別
5.0版本和之前版本的差異較大,本篇對熟悉3.2版本的使用者給出了一些5.0的主要區別。URL和路由5.0的URL訪問不再支援普通URL模式,路由也不支援正則路由定義,而是全部改為規則路由配合變數規則(
tp5和tp3.2的區別
萬變不離其宗,tp5和tp3.2雖說是差別很大,但是套路大家都懂得。只要我們瞭解了他們的區別,再去學tp5,豈不是如魚得水。 好,那我們來了解一下tp5和tp3.2的區別。 1,入口檔案的繫結 我們都知道thinkphp是一個單入口框架,它所有的請求都通過public/index.php
TP5和TP3的區別@郝少聰
樓主學TP框架就是學的TP5.0,目前公司使用TP3.2.3,今天就和大家總結一下基礎區別: 話不多說,直接上碼 <?php // TP5.0中在Controller呼叫資料庫表直接可以使用Db::table('表名') use think\Db; $res = D
TP3.2和TP5.0之間的區別
URL和路由 5.0的url訪問不再支援普通url模式 ,路由也不支援正則路由定義,而是全部改為規則路由配合變數規則(正則定義)的方式: 主要改進如下: 增加路由變數規則 增加組合變數支援 增加資源路由 增加路由分組 增加閉包定義支援 支援URL路由規則反
【TP3.2】詳解_initialize() 和 __construct() 的區別和聯系
instance ins 執行 構造方法 ces 實例化 direct control 初始化 1、假設 一個AdminController.class.php 集成至 \Think\Controller 類, 我們來看看Controller.class.php的構造方法源
thinkPHP3.2和TP3.1有什麼區別?
3.2版本在此前的3.1.3版本之上,引入了名稱空間,強化了驅動化和行為,增強了模組化的概念和對雲平臺的支援,並改進了諸多的細節。 主要改進包括: 模組化架構的全新設計 全新名稱空間和自動匯入機制 改進的路由功能 主題的動態切換支援 更強大的Action引數繫結
奪命雷公狗TP3.2.3商城11-----後臺頭部和左側導航分離
代碼 使用 phpstudy 效果 ima 導航 header dmi admin 我們來將網站後臺的頭部和左側的導航分離出來: 然後在模版中找到類為:topbar-inner clearfix 的地方: 然後我們在然後在D:\phpStudy\WWW\sho
python2和3的區別,怎麽樣做到輕松切換2和3
除了 之間 空格 Go 遍歷 error 努力 spa 捕獲異常 以下是菜鳥教程列舉的。這些零散的改變需要註意。 下面這些東西可能平時的程序根本沒用到,或者稍加註意就可以了。但2和3最主要的區別是,掌握編碼。 編碼在所有程序中無處不在,處理不好,要麽亂碼,要麽編碼
python的基礎2和3的區別,以及for和while的循環
python基礎;2和3的區別 ;字符編碼;if;whil;for循環 ; 第三方庫 字典 1、python2\python3的區別:python2\python3的區別:一、代碼重復,python2代碼重復功能復用,夾雜其他語言的部分,不規範python3進行整合,簡潔優美編譯型:一次性
TP5模型belongsTo和hasOne的區別
表示 add 舉例 address 出現 ddr 但是 一對一 兩個 在使用tp5模型的ORM的時候出現belongsTo和hasOne都有表示一對一的關系,但是二者並不相同。以下舉例說明兩者的區別: 首先有user表 字段 id name password字段 然後有us
【TP3.2.*】解決session過期不失效 和 設置不成功問題
lifetime runtime isset 清除 不成功 use 問題 func true 1、背景:本來我想設置session有效期1800秒即30分鐘 失效的,可是實際使用TP3.2.0的時候發現,登錄了幾天用戶竟然沒有失效,一直都可以登錄。 2、解決: 2.1
TP5 助手函數與TP3.2單字母函數
數據庫 direct 狀態 記錄日誌 view 5.0 red 置配 request 一、TP5 助手函數 助手函數描述 abort 中斷執行並發送HTTP狀態碼 action 調用控制器類的操作 cache 緩存管理 config 獲取和設置配置參數
2.int和integer的區別?
以前一直沒有思考,為啥要有一個int還要有一個integer。 實際上: 1. Ingeter是int的包裝類,int的初值為0,Ingeter的初值為null; 2.初始化的時候,int i =1; Integer i= new Integer(1);
php5.5和php7.2 方括號賦值的不同區別結果 (織夢升級到php7除錯後臺無法刪除欄目的問題)
php5.5和php7.2 方括號賦值的不同區別結果 織夢升級到php7除錯後臺無法刪除欄目的問題程式碼簡化例子如下: <?php /** * */ class TestName { var $string; var $arr; function __con
Qt學習筆記2:QMainWindow和QWidget的區別
在Qt工程建立時,Qt Widget Application模板下提供了不同的父類繼承。 這裡,主要分析一下QMainWindow和QWidget的區別。 建立工程 分別以QMainWindow和QWidget為基類建立工程,工程建立完成後,如下圖所示: Qt會自動建
Angularjs(1.x)和Angular(2+)資料髒檢測之間的區別
轉2篇個人認為寫的很好的: Angularjs(1.x) http://www.cnblogs.com/likeFlyingFish/p/6183630.html Angular(2+) https://blog.csdn.net/u011256637/article/d
Angularjs(1.x)和Angular(2+)數據臟檢測之間的區別
ons about 之間 loop 是否 imp temp some its 轉2篇個人認為寫的很好的: Angularjs(1.x) http://www.cnblogs.com/likeFlyingFish/p/6183630.html Angular(2+) ht
ThinkPHP5.0版本和ThinkPHP3.2版本的區別
5.0版本和之前版本的差異較大,本篇對熟悉3.2版本的使用者給出了一些5.0的主要區別。 URL和路由 5.0的URL訪問不再支援普通URL模式,路由也不支援正則路由定義,而是全部改為規則路由配合變數規則(正則定義)的方式: 主要改進如下; 增加路由變數規則; 增加組合變
每日一python(2):__str__和__repr__的區別
直接上程式碼 >>> class A: --- def __str__(self): --- return "這是一個字串 + 1" --- def __repr__(self): --- return "這是一個字串 + 2" >>
thinkphp5.0和thinkphp3.2的區別不同之處
先看目錄結構: thinkphp 5.0的目錄結構, 文件:https://www.kancloud.cn/manual/thinkphp5/118008 project 應用部署目錄 ├─application 應用目錄(可設定) │ ├─common 公