ThinkPHP3.1.3版本新特性概述
ThinkPHP3.1.3版本有一些特性,還是值得關(guān)注的,下面來簡單說下。
1、異常方面的改進(jìn)
新版的ThinkPHP3.1.3重寫了異常類ThinkException(其實(shí)是完全簡化成了直接繼承系統(tǒng)Exception類),并且把異常邏輯改進(jìn)封裝到Think類中。主要涉及到Think類的appException方法和halt函數(shù)。
并且改進(jìn)后的異常處理支持系統(tǒng)致命錯(cuò)誤的捕獲,Think類增加了fatalError方法,原理是使用了
register_shutdown_function(array('Think','fatalError'));
因此可以使得系統(tǒng)致命錯(cuò)誤通過統(tǒng)一的異常模板界面友好提示。
2、對PDO參數(shù)綁定的支持
因?yàn)門hinkPHP3.*版本采用的是混合數(shù)據(jù)庫驅(qū)動(dòng),同時(shí)也支持PDO方式,但之前版本并未針對PDO做優(yōu)化,只是簡單的封裝。3.1.3版本完善了對PDO以及Sqlarv的支持,因?yàn)镻DO和sqlsrv都支持參數(shù)綁定操作(注意,不支持參數(shù)綁定的數(shù)據(jù)庫和驅(qū)動(dòng)無法使用參數(shù)綁定功能)。
系統(tǒng)對參數(shù)綁定操作的支持分兩種:自動(dòng)綁定和手動(dòng)綁定。
自動(dòng)綁定是對于寫入操作(這里包括數(shù)據(jù)的新增和更新),框架會(huì)自動(dòng)把相關(guān)數(shù)據(jù)轉(zhuǎn)換成參數(shù)綁定方式執(zhí)行,這個(gè)部分不需要額外處理,因?yàn)閟qlsrv只有采用參數(shù)綁定的方式傳值才能支持UTF8數(shù)據(jù)寫入,但是每次寫入數(shù)據(jù)都要采用手動(dòng)參數(shù)綁定的話,就會(huì)顯得比較麻煩。為了避免和手動(dòng)參數(shù)綁定沖突,自動(dòng)參數(shù)綁定采用的是對字段名md5編碼的方式。
手動(dòng)綁定,通常用于查詢條件之類的,并且采用bind連貫操作方法,例如:
$model->where(array('id'=>':id','name'=>':name'))->bind(array(':id'=>$id,':name'=>$name))->select();
3、增加變量安全獲取方法
之前版本通過Action類的_post _get等方法來安全獲取變量,雖然沒問題,但局限是只能在控制器中獲取變量,新版把這一功能獨(dú)立成一個(gè)快捷方法I,可以用于任何地方。
使用方法如下:
I('get.id',0); // 獲取$_GET['id'] 如果不存在則默認(rèn)為0 I('post.name','','htmlspecialchars'); // 獲取$_POST['name'] 采用htmlspecialchars方法過濾 I('id'); // 獲取id參數(shù) 自動(dòng)判斷get或者post I('param.id'); // 獲取id參數(shù) 自動(dòng)判斷get或者post 和上面用法等效 I('put.id'); // 獲取put請求的id參數(shù)
還支持獲取整個(gè)數(shù)組,例如:
I('get.'); // 獲取$_GET數(shù)組 I('post.'); // 獲取$_POST數(shù)組
在使用I方法的情況下,系統(tǒng)的VAR_FILTERS和DEFAULT_FILTER過濾配置依然有效。
4、where方法的多次調(diào)用
模型類的where方法可以支持?jǐn)?shù)組方式的多次調(diào)用,例如:
$model->where(array('a'=>1,'c'=>2))->where(array('a'=>3,'b'=>1))->select();
多個(gè)where條件的時(shí)候,后面的條件會(huì)合并到前面的條件,最終的條件等效于:
$model->where(array('a'=>3,'b'=>1,'c'=>2))->select();
5、控制器中的assign方法支持連貫操作
我們可以在控制器使用:
$this->assign('name',$name)->assign('email',$email)->display();
或者:
$this->assign(array('name'=>$name,'email'=>$email))->display();
相關(guān)文章
在Thinkphp中使用ajax實(shí)現(xiàn)無刷新分頁的方法
這篇文章主要介紹了在Thinkphp中使用ajax實(shí)現(xiàn)無刷新分頁的方法的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-10-10PHP的反射類ReflectionClass、ReflectionMethod使用實(shí)例
這篇文章主要介紹了PHP的反射類ReflectionClass、ReflectionMethod使用實(shí)例,本文同時(shí)介紹了反射是什么、反射可以做哪些事情,并給出一個(gè)具體例子,是一篇不錯(cuò)的入門文章,需要的朋友可以參考下2014-08-08一個(gè)簡單安全的PHP驗(yàn)證碼類、PHP驗(yàn)證碼
這篇文章主要介紹了一個(gè)簡單安全的PHP驗(yàn)證碼類 PHP驗(yàn)證碼的相關(guān)資料,需要的朋友可以參考下2016-09-09PHP查詢數(shù)據(jù)庫中滿足條件的記錄條數(shù)(兩種實(shí)現(xiàn)方法)
在需要輸出網(wǎng)站用戶注冊數(shù)或者插入數(shù)據(jù)之前判斷是否有重復(fù)記錄時(shí),就需要獲取滿足條件的MySQL查詢的記錄數(shù)目,接下來介紹兩種查詢統(tǒng)計(jì)方法,感興趣的朋友可以了解下啊,或許對你有所幫助2013-01-01使用PHP和JavaScript判斷請求是否來自微信內(nèi)瀏覽器
這篇文章主要介紹了使用PHP和JavaScript判斷請求是否來自微信內(nèi)瀏覽器,包括在手機(jī)端的程序上使用微信的分享JS腳本的方法,需要的朋友可以參考下2015-08-08PHP可變函數(shù)學(xué)習(xí)小結(jié)
PHP 支持可變函數(shù)的概念。這意味著如果一個(gè)變量名后有圓括號(hào),PHP 將尋找與變量的值同名的函數(shù),并且嘗試執(zhí)行它,本文給大家分享php可變函數(shù)學(xué)習(xí)小結(jié),對php可變函數(shù)相關(guān)知識(shí)感興趣的朋友一區(qū)學(xué)習(xí)吧2015-11-11PHP實(shí)現(xiàn)手機(jī)歸屬地查詢API接口實(shí)現(xiàn)代碼
主要使用curl實(shí)現(xiàn),需要開啟php對curl的支持2012-08-08Dwz與thinkphp整合下的數(shù)據(jù)導(dǎo)出到Excel實(shí)例
這篇文章主要介紹了Dwz與thinkphp整合下的數(shù)據(jù)導(dǎo)出到Excel的方法,是結(jié)合jQuery與ThinkPHP框架實(shí)現(xiàn)的導(dǎo)出Excel技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-12-12