從 1.7.3 升級到 2.0.0
在進行升級版本之前,請先替換掉原來 index.php 檔案,使用靜態頁面來顯示,確保網站為離線狀態。
步驟 1: 更新您的 CodeIgniter 檔案
除了您的 application 目錄之外,請取代 "system" 目錄下所有檔案跟目錄。
注意: 假如您有自己開發的目錄跟程式,請先備份它們。
步驟 2: 在必要的地方調整 get_dir_file_info() 函數
2.0.0 版本帶來一個不能向前相容性的函數改變 get_dir_file_info(),此函數在 File 輔助函數。這行為在 CodeIgniter 是很少遇到的,但是這次我們覺得非常有道理,因為這次是嚴重的效能上問題。假如您需要遞迴使用此函數,您可以設定第二個參數 $top_level_only 將其改為 FALSE:
get_dir_file_info('/path/to/directory', FALSE);
步驟 3: 將 Plugins 轉換成 Helpers
2.0.0 版本移除 "Plugin" 功能,因為它和補助函數(helpers)功能相同,但是缺乏擴充性。您必須重新命名 plugin 檔案,例如從 filename_pi.php 更改成 filename_helper.php,並且移動檔案到 helpers 目錄,修改所有檔案如下:
$this->load->plugin('foo');
修改為
$this->load->helper('foo');
步驟 4: 更新儲存加密的資料
注意: 假如您的 application 尚未使用 Encryption 類別功能,之前沒有儲存加密資料,或環境不支援 Mcrypt 加密,您可以略過此步驟。
Encryption 類別經過數次改善,一些加強加密強度和效能改善,由於這些改變造成之前版本加密的資料無法解密。為了解決此轉換問題,新的類別提供了一個新函數 encode_from_legacy(),它將原本的加密演算法解密,並解升級到新版加密演算法。 這樣您就可以輕鬆快速轉換原來在資料庫所有已加密的資料。
請在 Encryption 類別手冊中閱讀如何使用此方法
步驟 5: 移除已載入使用的 compatibility 輔助函數
CodeIgniter 核心程式已經移除 compatibility 補助函數,所有 compatibility 函數都已經在新版 PHP5 支援。
步驟 6: 更新 Class 繼承方式
所有核心類別函數都加上前置符號: CI_,請更新所有 Models 和 Controllers 去個別繼承 CI_Model 和 CI_Controller。
步驟 7: 更新父類別建構子呼叫方式
現在所有 CodeIgniter 類別函式都使用 PHP5 建構子函數 __construct()。請更新繼承類別的寫法 parent::__construct()。
步驟 8: 更新使用手冊
請將原本使用手冊替換成新版本,包括圖片檔案。