Thinkphp與CI的區別

2021-08-02 08:39:25 字數 1770 閱讀 6423

深入學習一門新技術的最好方法就是看官方文件。

thinkphp5.0文件:

官方的說辭是:

主要特性

規範:遵循psr-2、psr-4規範,composer及單元測試支援;

嚴謹:異常嚴謹的錯誤檢測和安全機制,詳細的日誌資訊,為你的開發保駕護航; 靈活:減少核心依賴,擴充套件更靈活、方便,支援命令列指令擴充套件;

api友好:出色的效能和rest支援、遠端除錯,更好的支援api開發; 高效:惰性載入,及路由、配置和自動載入的快取機制;

orm:重構的資料庫、模型及關聯,mongodb支援;

只是:

不適合原有3.2專案的公升級,請慎重考慮商業專案公升級,但絕對是新專案的首選(無論是web還是api開發)

可以說是web後端該有的介面都有,最大程度滿足使用。

之前學習使用過codeigniter(即ci),我簡單的將它與ci的功能做下對比:

模型(model):模板相當於對資料的操作,資料存放的形式有多種:如資料庫、檔案系統、記憶體等。ci沒有強制繫結模板對資料庫的操作,而thinkphp(以下稱tp)預設跟資料庫操作強相關,確實實際中操作的資料一般都是資料庫的,但要操作其他儲存型別的資料要怎麼辦呢?其實tp只是提供了運算元據的許多便利介面,只要不使用這些介面,還是不耦合的;而且儲存型別的驅動是可配置的,比如可改為檔案資料操作。所以tp要方便的多。

命名空間的使用。ci黨體會不到命名空間帶來的便利與優雅。ci使用$this->load()匯入不同模組的兩個model時應該是衝突的,應該是可以覆蓋,但使用起來就不方便了。

tp很講究使用的便利性,所以提供了很多函式助手,一般正常使用是$a=class::function();,使用助手之後一般是$a = class();,便利了不少,這個使用上看習慣吧。ci就要麻煩冗長地寫成$this->class->function()

現在一想,ci和tp的mvc目錄結構有著比較大的區別:

ci的controllers、view、model就各分別乙個目錄,模組的劃分是以上面各目錄下新建子目錄作為模組目錄,或者乾脆沒有模組的概念,直接在目錄下建立控制器和模型等。

而tp是以模組作為基本的隔離單元,預設各個模板所對應的目錄下都有乙個controllers、view、model目錄。

至於除錯(debug),tp絕對是甩ci幾條街,官方提供的方法就有:

而ci只有簡單的將錯誤的呼叫暫列印出來,雖說這已經可以解決60%以上的問題了。

所以問題來了,為什麼ci在國外也很流行,國內也有一定數量的公司在使用呢?

還是用官方的話說吧:

codeigniter 就是你所需要的,如果...
所以,ci學習起來和用起來十分簡單和上手,框架非常輕量,這就成為一部分想要高效能又不想受框架過多約束的公司的首選了。

tp與ci的區別就先講到這裡,後面隨著學習的深入可能會有所補充。

-end-

CI框架與Thinkphp框架的一些區別

初學ci框架遇到的一些問題,與thinkphp框架對比的不同之處。system 是框架核心 index.php 是專案入口檔案 其他目錄可以刪除 控制器命名規則 控制器不加 controller 字尾,如 user.php 這就是乙個控制器 修改預設控制器和方法 修改方法如下 在 config ro...

CI 與 CD 有什麼區別

ci,cd and cd ci很容易理解,就是持續整合。但是cd既可以指 持續交付,也可理解為 持續部署。ci和cd之間有很多相似的部分,但是也有很大的區別。持續整合 continuous integration 在持續整合環境中,開發人員將會頻繁的提交 到主幹。這些新提交在最終合併到主線之前,都需...

ThinkPHP跳轉與重定向的區別

瀏覽器認為 當前url 請求成功 重新請求新的 url.瀏覽器會 記錄當前的url 和 新的url 在請求歷史記錄中.回退,是可以回退到 當前的 url上的 無論 success,和 error 都是一樣 語法實現 在瀏覽器層面,修改瀏覽器的 location.href來實現的 location.h...