ThinkPHP3.1.3版本新特性概述_PHP教程

來源:互聯網
上載者:User
ThinkPHP3.1.3版本有一些特性,還是值得關注的,下面來簡單說下。

1、異常方面的改進

新版的ThinkPHP3.1.3重寫了異常類ThinkException(其實是完全簡化成了直接繼承系統Exception類),並且把異常邏輯改進封裝到Think類中。主要涉及到Think類的appException方法和halt函數。
並且改進後的異常處理支援系統致命錯誤的捕獲,Think類增加了fatalError方法,原理是使用了

register_shutdown_function(array('Think','fatalError'));

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

2、對PDO參數綁定的支援

因為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();


3、增加變數安全擷取方法

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

I('get.id',0); // 擷取$_GET['id'] 如果不存在則預設為0I('post.name','','htmlspecialchars'); // 擷取$_POST['name'] 採用htmlspecialchars方法過濾I('id'); // 擷取id參數 自動判斷get或者postI('param.id'); // 擷取id參數 自動判斷get或者post 和上面用法等效I('put.id'); // 擷取put請求的id參數

還支援擷取整個數組,例如:

I('get.'); // 擷取$_GET數組I('post.'); // 擷取$_POST數組

在使用I方法的情況下,系統的VAR_FILTERS和DEFAULT_FILTER過濾配置依然有效。

4、where方法的多次調用

模型類的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();


5、控制器中的assign方法支援連貫操作

我們可以在控制器使用:

$this->assign('name',$name)->assign('email',$email)->display();

或者:

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

http://www.bkjia.com/PHPjc/825434.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/825434.htmlTechArticleThinkPHP3.1.3版本有一些特性,還是值得關注的,下面來簡單說下。 1、異常方面的改進 新版的ThinkPHP3.1.3重寫了異常類ThinkException(其實是完全...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.