首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

ThinkPHP 3.1.3 新特性概覽:異常重寫、PDO參數綁定、I()方法、where多調用、assign鏈式

     編輯:PHP 相關知識

1. 異常處理全面重寫

  • ThinkException 簡化為直接繼承 Exception。
  • 異常邏輯封裝至 Think 類 appException() 與 halt()。
  • 新增 fatalError() 捕獲致命錯誤:register_shutdown_function(array('Think','fatalError'));,統一友好錯誤頁。

2. PDO/SQLSRV 參數綁定支援

  • 自動綁定:寫入操作(add/save)框架自動轉參數綁定,字段名 MD5 編碼避免衝突。解決 SQLSRV 必須綁定才能寫入 UTF-8 的痛點。
  • 手動綁定:查詢條件用 bind() 鏈式操作:
    $model->where(array('id'=>':id','name'=>':name'))->bind(array(':id'=>$id,':name'=>$name))->select();
  • 僅支援參數綁定的驅動生效(PDO、SQLSRV)。

3. 通用安全變量獲取 I() 方法

I('get.id', 0);                    // $_GET['id'] 不存在默認 0
I('post.name', '', 'htmlspecialchars'); // $_POST['name'] 經 htmlspecialchars 過濾
I('id');                            // 自動判斷 GET/POST
I('param.id');                      // 同上,別名
I('put.id');                        // PUT 請求參數
I('get.');                          // 獲取整個 $_GET 陣列
I('post.');                         // 獲取整個 $_POST 陣列
  • 可在任意位置使用(不限控制器),替代 _get/_post。
  • 受 VAR_FILTERS/DEFAULT_FILTER 配置影響。

4. where() 多次調用自動合併

$model->where(array('a'=>1,'c'=>2))->where(array('a'=>3,'b'=>1))->select();
// 等效於
$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();

代碼更流暢,減少臨時變量。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved