<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 升級指導 [TOC=2,2] ## 從V5.0.23升級到V5.0.24 支持無縫升級 ## 從V5.0.22升級到V5.0.23 支持無縫升級 ## 從V5.0.21升級到V5.0.22 支持無縫升級 ## 從V5.0.20升級到V5.0.21 支持無縫升級 ## 從V5.0.19升級到V5.0.20 支持無縫升級 ## 從V5.0.18升級到V5.0.19 支持無縫升級 ## 從V5.0.17升級到V5.0.18 由于`5.0.18+`更具嚴謹性,如果數組查詢條件中使用了`exp`查詢,必須做出如下調整: ~~~ // 錯誤 $where['id'] = ['exp', '>score']; $model->where($where)->find(); // 正確 $where['id'] = ['exp', Db::raw('>score')]; $model->where($where)->find(); // 正確 推薦寫法 $model->whereExp('id', '>score')->find(); ~~~ 如果需要使用`exp`表達式更新數據,必須使用`Db::raw()`方法或者`exp`方法。下面用法不再支持: ~~~ // 錯誤 不再支持 $data['score'] = ['exp', 'score+1']; $model->where('id', 1)->update($data); // 正確 $data['score'] = Db::raw('score+1'); $model->where('id', 1)->update($data); // 正確 推薦用法 $model->where('id', 1)->exp('score', 'score+1')->update(); ~~~ ## 從V5.0.16升級到V5.0.17 >[danger] 如果你使用了閉包查詢條件,并且使用了默認的查詢緩存`cache()`或者`cache(true)`,新版本會拋出異常,請使用`cache('key')`替代,避免因為查詢緩存無效而影響業務。 > 如果你在`order`方法中使用了SQL函數,請使用`orderRaw`方法或者`Db::raw()`方法替代。 對于復雜的`field/where/order`字符串參數的,如果發現存在錯誤,盡量使用`fieldRaw/whereRaw/orderRaw`替代(只能傳入字符串參數)。 ## 從V5.0.15升級到V5.0.16 ### 默認模板渲染規則改進 由于`fetch`方法和`view`函數的默認模板規則調整為操作方法的名稱(不含操作后綴)轉換為小寫+下劃線方式,而不是原來的直接把操作名稱轉小寫。 舉個例子,你的控制器操作方法名如果是`helloWorld`,之前版本使用: ~~~ $this->fetch(); // 或者 view(); ~~~ 渲染輸出的時候會定位到 `helloworld.html`模板文件,而新版會自動定位到`hello_world.html`模板文件。 > 對于指定模板渲染的`fetch`方法和`view`助手函數不受影響,對于非駝峰操作方法名也沒有影響。 ## 從V5.0.14升級到V5.0.15 `V5.0.14`可以無縫升級到`V5.0.15`。 ## 從V5.0.13升級到V5.0.14 `V5.0.13`可以無縫升級到`V5.0.14`。 ## 從V5.0.12升級到V5.0.13 `V5.0.12`可以無縫升級到`V5.0.13`,如果使用了Redis緩存,需要清空下Redis緩存數據的內容。 ## 從V5.0.11升級到V5.0.12 `V5.0.11`可以無縫升級到`V5.0.12`。 ## 從V5.0.10升級到V5.0.11 `V5.0.10`可以無縫升級到`V5.0.11`。 >[danger] 升級完成后請務必清空下數據緩存。 ## 從V5.0.9升級到V5.0.10 `V5.0.9`可以無縫升級到`V5.0.10`。 ## 從V5.0.8升級到V5.0.9 `V5.0.8`可以無縫升級到`V5.0.9`。 ## 從V5.0.7升級到V5.0.8 如果自定義了應用的命名空間的話,原來的`app_namespace`配置參數改為`APP_NAMESPACE`常量在入口文件中定義 如果使用了多對多關聯,并且定義了中間表,那么中間表改為去掉前綴后的數據表名。 模型的scope方法之后只能使用數據庫查詢方法而不能使用模型的方法。 ## 從V5.0.6升級到V5.0.7 `V5.0.6`可以無縫升級到`V5.0.7`。 ## 從V5.0.5升級到V5.0.6 `V5.0.5`可以無縫升級到`V5.0.6`。 由于數據庫緩存策略的改進,之前如果使用了數據緩存,請先清空下數據緩存。 之前因為升級到5.0.5版本后 時間字段使用整型后也會自動格式化輸出的問題,現在可以設置數據庫的配置參數 `datetime_format`值為`false`即可關閉自動轉換。 另外,注意,如果使用了`MongoDb`數據庫擴展的話,請刪除數據庫配置文件中的`query`參數。 ## 從V5.0.4升級到V5.0.5 從`V5.0.4`升級到`V5.0.5`需要注意如下事項: 模型的時間日期字段會自動進行格式化輸出,不需要進行額外處理。 原生查詢不再支持返回數據集對象。 `Connection`類的`model`方法已經更改為`getQuery`。 關聯定義方法的`alias`參數已經廢棄。 分頁查詢返回類型變成`think\Paginator`(用法不變)。 數據緩存自動采用子目錄方式避免緩存數據文件過多影響性能。 Session類添加了`secure`和`httponly`參數,并且默認是true,如果不支持請手動關閉。 ## 從V5.0.3升級到V5.0.4 從`V5.0.3`升級到`V5.0.4`需要注意如下事項: 模型的關聯定義方法必須采用駝峰法(小寫字母打頭)命名規范,但關聯調用可以支持駝峰和小寫方式。 行為類的方法必須使用駝峰法命名,如果你使用了鉤子位作為行為執行方法入口,請修改為駝峰法,例如 `app_init`鉤子位對應的行為方法名應該是 `appInit`。 如果你使用了Query類的`fetchClass`方法自定義數據集返回對象的話,請改為在模型中設置`resultSetType`屬性,數據庫類不再支持自定義查詢數據集對象(只支持數組和系統的`think\Collection`數據集對象) ## 從V5.0.2升級到V5.0.3 從`V5.0.2`升級到`V5.0.3`需要注意如下事項: 對于join方法和view方法使用子查詢的情況,請盡量使用數組方式: >[info] ['子查詢'=>'別名'] ## 從V5.0.1升級到V5.0.2 從`V5.0.1`升級到`V5.0.2`需要注意如下事項: 下列模型屬性和方法由原來的靜態(static)定義改為動態定義: * 聚合模型的`relationModel`屬性 * Model類的`useGlobalScope` 屬性 * 軟刪除屬性 `deleteTime`屬性 * 全局查詢范圍方法`base`改為動態方法 原來的`join`方法和`view`方法的第一個參數規范化,支持下面三種用法: >[info]#### 用法一:[ '帶前綴表名'=>'別名' ] >#### 用法二:'帶前綴表名 別名' >#### 用法三:'不帶前綴的表名' 如果有其它用法注意調整,下面的用法不再支持: >[info] #### '不帶前綴表名 別名' 如果使用了空操作方法,無需給`_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參數支持傳入空字符串,則不做任何處理 >[danger]### 關鍵幾點: > 默認模板目錄全部是小寫+下滑線規范; > 控制器類的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版本控制器寫法 ~~~ <?php namespace 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|廢除|
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看