CodeIgniter 4 建議路線(xiàn)圖
我們綜合考慮了社區(qū)的愿望和意見(jiàn)后,也對(duì)什么樣的未來(lái)對(duì) CI 是最合適的做了一些思考,然后,CI 理事會(huì)對(duì)框架的未來(lái)做出了一些決策。預(yù)告一下,未來(lái)將會(huì)有重大變化,但我們相信他們不僅為我們的未來(lái)做準(zhǔn)備,也會(huì)保持 CodeIgniter 的一貫特點(diǎn) - 簡(jiǎn)潔、快速和靈活。
這篇文章是對(duì)未來(lái)的一個(gè)簡(jiǎn)單概述。請(qǐng)記住,這僅僅是最初的計(jì)劃。任何信息都可能會(huì)隨著開(kāi)發(fā)的進(jìn)行而發(fā)生變化。
核心變化
從 CodeIgniter 第一版發(fā)布以來(lái),PHP 社區(qū)發(fā)生了巨大變化。CodeIgniter 的許多核心要素在當(dāng)時(shí)是必須的,但當(dāng) PHP5 發(fā)布后,CodeIgniter 的核心幾乎沒(méi)有任何變化。如果未來(lái) CodeIgniter 想要繼續(xù)保持高水準(zhǔn)并鞏固其在 PHP 框架中的地位,則必須進(jìn)行大改變。
這意味著系統(tǒng)必須全部重寫(xiě)。新的 CI 將在獨(dú)立的代碼庫(kù)中開(kāi)發(fā)以保持代碼的清晰。我們?cè)O(shè)想會(huì)復(fù)用一些以前的代碼,但重點(diǎn)是 現(xiàn)代的 清晰的代碼。
自從我們以 PHP 7 為目標(biāo)以來(lái),PHP 5.6 已進(jìn)入安全維護(hù)模式,并將在幾個(gè)月后完全停止支持。CI 暫時(shí)不會(huì)為一個(gè)即將停止支持的 PHP 版本發(fā)布新版本。我們知道主機(jī)的環(huán)境千差萬(wàn)別,那么一些程序可能就無(wú)法完全支持 PHP 7,所以 3.x 分支將繼續(xù)維護(hù)一段時(shí)間 - 將遠(yuǎn)遠(yuǎn)長(zhǎng)于 3.x 發(fā)布后的 2.x 分支的 EOL 時(shí)限。
application 和 system 目錄都將支持 PSR-4 自動(dòng)加載。CodeIgniter 將使用自己的自動(dòng)加載器,并將會(huì)整合 Composer。
我們將封裝一些組件,以便在大多數(shù)情況下可以用于 CodeIgniter 以外的項(xiàng)目。
包/模塊
我們將丟棄應(yīng)用程序包和模塊的概念。不必驚慌!因?yàn)槟憧梢杂妹挚臻g來(lái)處理大多數(shù)情況 - 至少控制器和模型是這樣的。對(duì)于其他的例如視圖、配置文件和 Helper 等,我們相信可以讓這些東東支持名字空間。你也可以把所有包的功能和模塊的路由能力放到任意目錄中,只需告訴自動(dòng)加載器如何找到他們。
路由
路由功能將被更新。URI 直接映射到控制器/方法這個(gè)『魔術(shù)路由』功能將可關(guān)閉,以便讓你選擇自己喜歡的路由方式。在路由配置文件中你可以選擇使用『魔術(shù)路由』或者單獨(dú)指定每個(gè)路由。
改進(jìn)的日志系統(tǒng)
日志系統(tǒng)將被改進(jìn),但具體細(xì)節(jié)尚未確定。
測(cè)試
我們將繼續(xù)使用 PHPUnit 做測(cè)試。這也意味著你需要自己測(cè)試應(yīng)用程序,但我們將為你準(zhǔn)備好所需的工具。
向后兼容性
正如上面講到的那樣,這一定是一個(gè)和老版本不兼容的版本。我們認(rèn)為這應(yīng)該是框架最好的未來(lái)。對(duì)于這次的重大變化,我們已經(jīng)做了很多年的基礎(chǔ)工作,我們將盡可能的使過(guò)渡更平滑,但是對(duì)于我們能提供一個(gè)怎樣的現(xiàn)代化的基礎(chǔ)代碼仍有待觀察。
我們將盡最大努力保持讓 CodeIgniter 多年來(lái)流行的特性,即快速、簡(jiǎn)潔和『優(yōu)雅』。
開(kāi)發(fā)時(shí)間表
整個(gè)開(kāi)發(fā)過(guò)程將分為三個(gè)階段。
下列類(lèi)庫(kù)將從內(nèi)核刪除,改為按需下載:排版類(lèi)、FTP 類(lèi)、ZIP 類(lèi)和 XML-RPC 類(lèi)。
購(gòu)物車(chē)類(lèi)、Javascript 類(lèi)、單元測(cè)試類(lèi)和 Trackback 類(lèi)將被刪除。
我們期望在一年內(nèi)能完成一個(gè)內(nèi)核基本成型的 Alpha 版本。之后,我們將把重點(diǎn)放在改進(jìn)內(nèi)核與開(kāi)發(fā)剩余軟件包的工作中。確切的時(shí)間表可能會(huì)有所不同,因?yàn)?,與大多數(shù)開(kāi)源項(xiàng)目一樣,這取決于社區(qū)貢獻(xiàn)的數(shù)量與質(zhì)量,以及核心開(kāi)發(fā)者的時(shí)間和精力。
第一階段
第一階段將側(cè)重于抓住框架最重要的部分。這將是框架其他部分的基礎(chǔ)。他們包括:
自動(dòng)加載器
依賴(lài)注入
日志
異常處理
HTTP 請(qǐng)求/響應(yīng)層(或輸入/輸出)
路由
控制器
模型
數(shù)據(jù)庫(kù)層
配置
安全
第二階段
第二階段的重點(diǎn)是完善一些 CodeIgniter 用戶(hù)喜聞樂(lè)見(jiàn)的類(lèi)和特性。他們包括:
Helper
語(yǔ)言/國(guó)際化特性
緩存
Email
加密
表單驗(yàn)證
圖像處理類(lèi)庫(kù)
分頁(yè)
上傳類(lèi)
Session
視圖
調(diào)試和分析工具
第三階段 - 可選類(lèi)庫(kù)
第三階段將主要用來(lái)擴(kuò)充可選軟件包。在這個(gè)時(shí)間點(diǎn),框架應(yīng)該可以發(fā)布了,不需要等到所有類(lèi)庫(kù)都準(zhǔn)備就緒。
FTP
XML-RPC
Zip
排版類(lèi)
模板解析器