說說ThinkPHP3 1 3版本的特性

2022-04-06 15:32:45 字數 2217 閱讀 9968

官方昨天正式發布了thinkphp3.1.3版本,雖然該版本只是乙個小版本更新,但是有一些特性,還是值得關注的,下面來簡單說下。新版重寫了異常類thinkexception(其實是完全簡化成了直接繼承系統exception類),並且把異常邏輯改進封裝到think類中。主要涉及到think類的appexception方法和halt函式。

並且改進後的異常處理支援系統致命錯誤的捕獲,think類增加了fatalerror方法,原理是使用了 register_shutdown_function(array('think','fatalerror'));

複製**

因此可以使得系統致命錯誤通過統一的異常模板介面友好提示。

因為thinkphp3.*版本採用的是混合資料庫驅動,同時也支援pdo方式,但之前版本並未針對pdo做優化,只是簡單的封裝。3.1.3版本完善了對pdo以及sqlarv的支援,因為pdo和sqlsrv都支援引數繫結操作(注意,不支援引數繫結的資料庫和驅動無法使用引數繫結功能)。

系統對引數繫結操作的支援分兩種:自動繫結和手動繫結。

自動繫結是對於寫入操作(這裡包括資料的新增和更新),框架會自動把相關資料轉換成引數繫結方式執行,這個部分不需要額外處理,因為sqlsrv只有採用引數繫結的方式傳值才能支援utf8資料寫入,但是每次寫入資料都要採用手動引數繫結的話,就會顯得比較麻煩。為了避免和手動引數繫結衝突,自動引數繫結採用的是對欄位名md5編碼的方式。

手動繫結,通常用於查詢條件之類的,並且採用bind連貫操作方法,例如: $model->where(array('id'=>':id','name'=>':name'))->bind(array(':id'=>$id,':name'=>$name))->select();

複製**

之前版本通過action類的_post _get等方法來安全獲取變數,雖然沒問題,但侷限是只能在控制器中獲取變數,新版把這一功能獨立成乙個快捷方法i,可以用於任何地方。

使用方法如下: i('get.id',0);//獲取$_get['id']如果不存在則預設為0 i('post.name','','htmlspecialchars');//獲取$_post['name']採用htmlspecialchars方法過濾 i('id');//獲取id引數自動判斷get或者post i('param.id');//獲取id引數自動判斷get或者post和上面用法等效 i('put.id');//獲取put請求的id引數

複製**

還支援獲取整個陣列,例如: i('get.');//獲取$_get陣列 i('post.');//獲取$_post陣列

複製**

在使用i方法的情況下,系統的var_filters和default_filter過濾配置依然有效。

模型類的where方法可以支援陣列方式的多次呼叫,例如: $model->where(array('a'=>1,'c'=>2))->where(array('a'=>3,'b'=>1))->select();

複製**

多個where條件的時候,後面的條件會合併到前面的條件,最終的條件等效於: $model->where(array('a'=>3,'b'=>1,'c'=>2))->select();

複製**

我們可以在控制器使用: $this->assign('name',$name)->assign('email',$email)->display();

複製**

或者: $this->assign(array('name'=>$name,'email'=>$email))->display();

複製**

之前版本只能支援把分組部署到某個二級網域名稱,現在我們可以部署到某個ip位址或者完整網域名稱,例如: 'app_sub_domain_deploy'=>true, 'app_sub_domain_rules'=>array( '202.5.6.78'=>array('admin/'),//部署admin分組到ip位址202.5.6.78訪問 'admin.mydomain.com'=>array('admin/'),//部署admin分組到admin.mydomain.com網域名稱 )

複製**

改進後,獨立分組的語言包直接放入分組目錄下面的lang目錄,並且公共語言包仍然是common.php,模組語言包是:模組名.php。

3.1.3版本中獨立分組的情況下,a方法和d方法均支援跨分組呼叫(用法同跨普通分組呼叫),並且修正了r方法呼叫中存在的模版賦值無效的情況。

還有很多的細節完善,後續再來描述吧。是否值得公升級自己權衡吧,哈哈~也希望大家把使用新版中遇到的問題及時反饋給我們。

ThinkPHP3 1 3的學習之路 1

昨天開始接觸thinkphp框架,3.1.3版本的。不是最新的版本,不過還是學習它的方法和思路。1.建立入口檔案 在thinkphp同級目錄下面建立乙個index.php.require thinkphp thinkphp.php 2.在index資料夾中的lib中的action 控制器 中,編寫一...

ThinkPHP公升級至 5 1 18 版本

v5.1.18版本主要完善了對 swoole 和 workerman 的 httpserver 執行支援,改進 request 類,並修正了一些已知的問題。從 5.1.17 版本可以無縫公升級到 5.1.18 由於取消了test日誌驅動,如果使用了test日誌驅動,請在log.php中改為使用下面的...

分頁 thinkphp5 0版本

一.簡潔分頁 不含頁碼,只能翻閱上下頁 控制器部分 pagesize 15 每頁顯示15條資料 data db name db where array key key order id desc paginate pagesize,true page data render this assign ...