區(qū)別:1、CI沒有強(qiáng)制綁定模板對數(shù)據(jù)庫的操作,而Thinkphp有;2、thinkphp講究使用的便利性,提供了很多函數(shù)助手,而CI的使用比較麻煩冗長;3、CI的視圖文件不可配置,而TP的視圖文件可配置。4、TP提供多種調(diào)試方法,CI沒有。
本教程操作環(huán)境:Windows7系統(tǒng)、thinkphp v5.1版、Dell G3電腦。
ThinkPHP與CI的功能做下對比:
-
模型(Model):模板相當(dāng)于對數(shù)據(jù)的操作,數(shù)據(jù)存放的形式有多種:如數(shù)據(jù)庫、文件系統(tǒng)、內(nèi)存等。CI沒有強(qiáng)制綁定模板對數(shù)據(jù)庫的操作,而ThinkPHP(以下稱TP)默認(rèn)跟數(shù)據(jù)庫操作強(qiáng)相關(guān),確實(shí)實(shí)際中操作的數(shù)據(jù)一般都是數(shù)據(jù)庫的,但要操作其他存儲類型的數(shù)據(jù)要怎么辦呢?其實(shí)TP只是提供了操作數(shù)據(jù)的許多便利接口,只要不使用這些接口,還是不耦合的;而且存儲類型的驅(qū)動(dòng)是可配置的,比如可改為文件數(shù)據(jù)操作。所以TP要方便的多。
-
命名空間的使用。CI黨體會(huì)不到命名空間帶來的便利與優(yōu)雅。CI使用$this->load()導(dǎo)入不同模塊的兩個(gè)model時(shí)應(yīng)該是沖突的,應(yīng)該是可以覆蓋,但使用起來就不方便了。
立即學(xué)習(xí)“PHP免費(fèi)學(xué)習(xí)筆記(深入)”;
-
TP很講究使用的便利性,所以提供了很多函數(shù)助手,一般正常使用是$a=class::function();,使用助手之后一般是$a = class();,便利了不少,這個(gè)使用上看習(xí)慣吧。CI就要麻煩冗長地寫成$this->class->function()。
-
說說視圖(view)與模板(template)。CI的視圖文件的存放位置是application/view下面,而且不可配置,至少我沒找到可以配置的地方。TP的view目錄可配置,而且不一定要在application下,對安全訪問和視圖定制與替換提供比較大的便利性。
對于模板,CI實(shí)現(xiàn)得比較雞肋,雖說有個(gè)模板解析類?$this->load->library(‘parser’);?可以通過左邊這代碼加載,但是只能實(shí)現(xiàn)變量的簡單替換,較復(fù)雜的控制結(jié)構(gòu)就實(shí)現(xiàn)不了了,到頭來還是用原生的php代碼實(shí)現(xiàn)(我估計(jì)官方也提倡用原生,畢竟原生不用多解析一般,效率上占優(yōu),語法也不用再學(xué)一套)。
而TP的模板就比較全面和成熟,有自己的一套語法,基本上是不用夾雜原生php,也許對于前端工程師來說是個(gè)好事吧,不用學(xué)php,就學(xué)個(gè)模板語法。前后端分工也就更加明確了。 -
現(xiàn)在一想,CI和TP的mvc目錄結(jié)構(gòu)有著比較大的區(qū)別:
CI的controllers、view、model就各分別一個(gè)目錄,模塊的劃分是以上面各目錄下新建子目錄作為模塊目錄,或者干脆沒有模塊的概念,直接在目錄下創(chuàng)建控制器和模型等。
而TP是以模塊作為基本的隔離單元,默認(rèn)各個(gè)模板所對應(yīng)的目錄下都有一個(gè)controllers、view、model目錄。
-
至于調(diào)試(debug),TP絕對是甩CI幾條街,官方提供的方法就有:
而CI只有簡單的將錯(cuò)誤的調(diào)用暫打印出來,雖說這已經(jīng)可以解決60%以上的問題了。
【相關(guān)教程推薦:thinkphp框架】