CI 2.2 如何支持 PHP 7
CodeIgniter(簡(jiǎn)稱 CI)是一個(gè)輕量級(jí)的 PHP 開(kāi)發(fā)框架。然而,CI 2.2 最后一個(gè)正式版本于 2015 年發(fā)布,而 PHP 7 在2015年才剛剛發(fā)布。因此,CI 2.2 本身并不原生支持 PHP 7。如果你想在 CI 2.2 中使用 PHP 7,你需要進(jìn)行一些調(diào)整和修改。這篇文章將向你介紹一些可行的方法,幫助你讓 CI 2.2 兼容 PHP 7。
1. 使用最新的 CI 2.2 分支
雖然 CI 2.2 不原生支持 PHP 7,但是 CI 2.2 的最新分支在 GitHub 上提供了一些修復(fù)和改進(jìn),以使其能與 PHP 7 兼容。你可以從 GitHub 上下載并手動(dòng)替換你的 CI 2.2 文件夾,或者通過(guò) composer 安裝它。
composer require kenjis/ci-phpunit-test
2. 將錯(cuò)誤報(bào)告級(jí)別設(shè)置為 E_ALL
在 CI 2.2 中,錯(cuò)誤報(bào)告級(jí)別默認(rèn)設(shè)置為 E_ERROR | E_WARNING | E_PARSE,這對(duì)于 PHP 7 是不夠的。PHP 7 引入了一些新的錯(cuò)誤和警告類型,所以你需要將錯(cuò)誤報(bào)告級(jí)別設(shè)置為 E_ALL,以便及時(shí)發(fā)現(xiàn)并調(diào)試你的應(yīng)用程序。
error_reporting(E_ALL);
3. 修改加載器
在 CI 2.2 中,加載器主要負(fù)責(zé)加載其他類、庫(kù)和助手。原始的加載器代碼會(huì)在 PHP 7 中發(fā)生一些問(wèn)題。你可以將原始的加載器代碼替換為 Ci_Loader 類,這個(gè)類在 CI 3.0 中被引入,并且對(duì) PHP 7 友好。
class MY_Loader extends CI_Loader
{
// your custom code here
}
4. 處理過(guò)時(shí)的函數(shù)和方法
PHP 7 引入了一些新的特性和改進(jìn),也刪除了一些過(guò)時(shí)的函數(shù)和方法。在 CI 2.2 中,你需要檢查并更新使用了過(guò)時(shí)函數(shù)和方法的代碼。例如,你可以將 mysql_* 函數(shù)替換為 mysqli 或 PDO。你還需要注意一些其他重要的變化,如分配函數(shù)的結(jié)果給引用變量。
// 舊版本的代碼
mysql_connect($hostname, $username, $password);
// 更新后的代碼
$mysqli = new mysqli($hostname, $username, $password);
$mysqli->connect_error || $mysqli->error)
總結(jié)
盡管 CI 2.2 不原生支持 PHP 7,但通過(guò)一些調(diào)整和修改,你仍然可以在 CI 2.2 中使用 PHP 7。使用最新的 CI 2.2 分支、設(shè)置錯(cuò)誤報(bào)告級(jí)別、修改加載器以及處理過(guò)時(shí)的函數(shù)和方法,這些方法都有助于你將 CI 2.2 遷移到 PHP 7,從而使你的應(yīng)用程序能夠在最新的 PHP 版本中運(yùn)行。