CodeIgniter vs Laravel:全面比較兩者之間的區別

CodeIgniter vs Laravel:全面比較兩者之間的區別

在網路上,PHP的寶座是沒有競爭對手的。它在某種程度上為79%的網站提供動力。開發人員將一些常用的PHP功能組織和打包,以捆綁的形式稱為PHP框架,使PHP更加靈活。

CodeIgniter和Laravel是當今最有影響力的兩個PHP框架。他們卓越的產品極大地促進了當今網際網路的發展。

如果你正在尋找網路開發技術來構建你的網路應用程式,或者想從事網路開發的職業,其中一個是你的最佳選擇。這就引出了一個問題,不過。哪一個?

本文將試圖通過研究CodeIgniter和Laravel框架的架構、主要特徵、關鍵差異和使用者來回答這個問題。

  1. 什麼是CodeIgniter?
  2. CodeIgniter的主要特點
  3. 誰在使用CodeIgniter?
  4. 什麼是Laravel?
  5. Laravel的主要特點
  6. 誰在使用Laravel?
  7. CodeIgniter vs Laravel: 全面比較
  8. CodeIgniter vs Laravel: 比較表
  9. CodeIgniter vs Laravel: 你應該選擇哪個?

什麼是CodeIgniter?

CodeIgniter 標誌

CodeIgniter 標誌. (圖片來源:Nabtron)

CodeIgniter是一個PHP框架,和其他PHP框架一樣,它可以防止你重複編寫相同的PHP程式碼。然而,儘管是一個PHP框架,它提供了一個明顯的最小的足跡和改進的效能。

2006年2月28日,EllisLab推出了CodeIgniter網路框架。然而,在2014年,他們將CodeIgniter的權力移交給了不列顛哥倫比亞技術學院(BCIT)。到目前為止,BCIT一直負責CodeIgniter的所有版本釋出和維護。

如果你想要一個簡單而有吸引力的PHP工具包來建立一個功能齊全的Web應用,那麼CodeIgniter是最好的選擇。而且,即使其他幾個PHP web框架也是類似的,但CodeIgniter有很多優點,使它成為市場的領導者之一。

像許多其他的PHP框架一樣,CodeIgniter是基於模型-檢視-控制器(MVC)架構。因此,當使用者請求一個資源時,控制器是第一個反應。然後,控制器在請求必要的資料之前對使用者的請求進行評估。

CodeIgniter工作流程圖

CodeIgniter工作流程圖。(圖片來源:CodeIgniter)

CodeIgniter為庫提供了一個直接的使用者介面和一個邏輯結構來訪問這些庫,以及外掛、輔助工具和其他資源。它在保持高效能的同時,簡化了對PHP複雜功能的使用。

CodeIgniter的主要特點

CodeIgniter的主要功能

CodeIgniter的主要功能。(圖片來源:Chapter247)

讓我們來看看CodeIgniter的主要功能:

  • 遵循MVC:CodeIgniter MVC框架通過分離邏輯和表現模組來加速你的網站開發並提高效能。控制器處理請求,資料庫執行模型的動作,而檢視則顯示輸出。
  • 輕量級: CodeIgniter的核心繫統使用一些小的庫,並根據需要載入額外的庫,使其精簡而快速。因此,CodeIgniter既可以建立快速的網路應用,也可以建立最小可行產品(MVP)和原型。
  • 內建的安全性: CodeIgniter由於其加密和解密能力而值得信賴。它有XSS過濾、CSRF保護、密碼處理和輸入資料驗證來保護你的Web應用。像SQL隱碼攻擊、跨站指令碼攻擊和遠端程式碼執行等威脅都不是它的對手。
  • 庫和助手:CodeIgniter通過內建的功能,如表單、陣列、檔案處理、cookies、字串和目錄,簡化了編碼。它有所有你需要的工具來建立和修改庫和助手,並且你可以在未來使用ExpressionEngine,一個開源的內容管理系統(CMS)來使用它們。
  • 易於遷移:使用CodeIgniter,從一個伺服器遷移到另一個伺服器是一件很容易的事情。公司只依賴CodeIgniter,因為它提供無縫的遷移協助。你可以毫不費力地將舊的資料轉移到這個框架。另外,如果你在遷移過程中遇到問題,你可以依靠它龐大而有幫助的社羣。
  • 測試驅動的開發:CodeIgniter允許測試驅動的開發,指的是一個逐步的測試系統。它使你能夠在開發階段使用一個逐步的過程和廣泛的測試來評估網站的效能
  • 資料庫抽象層:CodeIgniter包括一個資料庫抽象層,允許你建立、插入、更新和刪除資料,而無需編寫SQL程式碼。在同一個應用程式中連線不同的資料庫變得更加容易,包括MySQL、MSSQL、Oracle、MySQLi、PostgreSQL和SQLite。
  • 快速學習:你可以在很短的時間內學會CodeIgniter並開始用它開發專業的應用程式。如果你有任何PHP經驗,這對你來說應該是輕而易舉的。
  • 詳細的文件:CodeIgniter全面而完美的文件流程將幫助你快速設定和進入框架。
  • 社羣支援: CodeIgniter有豐富的社羣支援。如果你在這個框架的高階開發中遇到問題,有很多熟練的專業人士可以幫助你。

誰在使用CodeIgniter?

自2006年成立以來,CodeIgniter已經為從新的開發者到知名的行業名稱的所有人提供服務。現在許多企業都依賴CodeIgniter。

讓我們來看看一些重要的CodeIgniter使用者:

  • Search Engine Optimization, Inc.
  • California State University
  • NetSuite Inc
  • Casio Computers
  • The Mail & Guardian
  • Nissan
  • NetSuite Inc
  • Freedcamp
  • McClatchy
  • Buffer

什麼是Laravel?

Laravel的官方Logo

Laravel的官方Logo。(圖片來源:GitHub)

Laravel是一個PHP框架,它簡化了PHP,使開發人員的開發過程更容易。它提供了不同的元件和模板,使你在用PHP開發應用程式時省去從頭開始的麻煩。

由於Laravel豐富的生態系統和眾多的相容包和擴充套件,許多開發人員喜歡用它來加速他們的開發過程。Laravel讓PHP變得更快,並幫助開發者將其提升到新的水平。事實上,Laravel幫助防止了PHP的消亡

Laravel Eloquent ORM

Laravel Eloquent ORM。(圖片來源:TheCodework)

像CodeIgniter一樣,Laravel開發使用MVC架構,使你的開發過程更容易。它將表現層和業務邏輯分開。

Laravel MVC架構

Laravel MVC架構。(圖片來源:Net Solutions)

當用PHP從頭開始建立一個網站時,你可能已經注意到UI和資料庫查詢都包含在一個檔案中。有了MVC模式, 你可以把這些分成三個元件, 使得應用開發更容易, 更有條理。

此外, 與其他現代Web開發框架不同, Laravel讓你使用原始SQL, 一個流暢的查詢生成器, 以及Eloquent ORM與任何支援的資料庫, 如MariaDB或MySQL。

Laravel的主要特點

Laravel框架的特點

Laravel框架的特點。(圖片來源:MavenCluster)

Laravel包括幾個功能,以提供一個美麗和強大的網路體驗。讓我們來捋一捋Laravel框架中最重要的幾個方面:

  • 模板引擎:Laravel的輕量級模板引擎, Blade, 使它比其他的更有吸引力. 你可以用它來建立令人驚歎的佈局, 整合CSS, 和強大的JavaScript結構。此外, 你可以通過使用動態模板引擎來改變, 調整, 和清理佈局而不需要指令碼.
  • 優雅的物件關係對映(ORM):Laravel的物件關係對映(ORM)框架有一個漂亮的簡單的ActiveRecord實現,用於資料庫互動。而不是SQL,你可以在PHP中寫資料庫查詢。它還通過分配匹配的模型將程式和資料庫表結合起來,使得它比之前的PHP框架更加快速。
  • MVC架構:Laravel的MVC架構將外觀和業務邏輯分開,加快了開發速度。它增強了文件,包含各種內建功能,提高了安全性和可擴充套件性,並提高了效能。同時, MVC簡化了非結構化的編碼, 促進了重大專案的開展.
    資料遷移。 Laravel包括一個遷移系統,允許你使用PHP程式碼來改變資料庫結構。 Laravel模式構建器允許資料庫遷移而不需要記住它們。這個自動化的過程使你能夠不間斷地進行遷移,也不會造成損失。
  • 內建包:Laravel包括許多內建包,協助你保持你的程式碼清潔。例如, Socialite包通過一個單一的點選註冊系統將Facebook或谷歌認證整合到你的網站中.
  • 強大的安全性:Laravel最重要的功能是安全。它通過內建的安全系統來處理你的網站的內部安全。例如, Hashed and Salted系統保護Laravel, 你不能以純文字形式儲存密碼. 同樣的, Laravel通過攔截所有的請求和程序來防止黑客在你的伺服器上遠端安裝惡意程式碼.
  • Artisan:Artisan是一個命令列工具, 可以簡化和自動化Laravel的常規編碼任務. 強大的Symfony Console元件為它提供動力。例如,它可以生成一個MVC檔案結構或資料庫模式,執行程式碼遷移,並按照要求管理資產。

誰在使用Laravel?

Laravel,最流行的網路開發框架,已經創造了大量的需求。因此, 各種規模的企業都依賴Laravel.

一些最大的企業已經接受了Laravel,包括:

  • BBC
  • Pfizer
  • Novell, Inc.
  • TourRadar
  • 9GAG
  • Alpha Coders
  • About You
  • Laracasts
  • Alison
  • Invoice Ninja

CodeIgniter vs Laravel:全面比較

現在我們已經熟悉了CodeIgniter和Laravel, 他們的特點, 以及他們的應用, 讓我們在幾個重要的引數上對他們進行比較。

相同點

除了許多不同之處,CodeIgniter和Laravel也有一些相似之處。因此,讓我們在討論CodeIgniter與Laravel之前,先從相似之處開始。

CodeIgniter和Laravel的相似之處包括:

  • PHP框架: CodeIgniter和Laravel都是PHP框架。因此,PHP是CodeIgniter和Laravel的核心動力。儘管兩者的功能不同,但都代表了相同的語言。
  • MVC架構:CodeIgniter和Laravel都遵循MVC開發模式。然而,CodeIgniter並不要求嚴格遵守MVC模式,而Laravel則在很大程度上依賴於它。
  • 開源:CodeIgniter和Laravel都是開源的PHP框架。因此,你可以在GitHub上找到Laravel和CodeIgniter的原始碼。你和其他人都可以根據自己的具體需求修改和調整這些技術。
  • 活躍的記錄: CodeIgniter和Laravel都支援主動記錄的資料庫模式。它可以用最少的指令碼實現資料庫資訊的檢索, 插入, 和修改. CodeIgniter使用一個修改過的版本,而Laravel通過Eloquent ORM與之合作。

認證和安全

認證是網路系統安全的一個重要組成部分。CodeIgniter和Laravel都有自己的有效認證系統。

CodeIgniter

CodeIgniter有一個內建的認證庫,叫做Shield。它是安全的,靈活的,可擴充套件的,以適應許多型別的網站。

它提供了幾個認證功能,如基於會話的認證,個人訪問令牌認證,基於角色的訪問控制,每個使用者的許可權覆蓋,以及更多。

Laravel Laravel-Sanctum-authentication

Laravel-Sanctum-authentication。(圖片來源: Dev)

Laravel有一個內建的認證系統,稱為Laravel Sanctum,這使得實現認證變得輕而易舉。你的應用程式的每個使用者可以通過Sanctum為他們的賬戶生成幾個API令牌。

此外, Laravel提供了用於認證的軟體包, 如Laravel-UI, Breeze, 和JetStream. 他們允許你使用這些選項中的任何一個來實現自動驗證系統, 省去了你為驗證寫額外程式碼的精力。

可擴充套件性和可伸縮性

可延展性是指增加你的應用程式的流量、效能和整體規模的能力。而可擴充套件性是指在不改變其程式碼或架構的情況下擴充套件其功能的能力。

CodeIgniter和Laravel在延展性和可擴充套件性方面都站在堅實的基礎上。

CodeIgniter

CodeIgniter是非常輕的。Rasmus Lerdorf推薦它為最輕量級的框架,因為它沒有約定俗成的重大開銷,使得它具有顯著的可擴充套件性。

CodeIgniter允許你擴充套件它的幫助器、類擴充套件、庫和鉤子。它還可以幫助你建立核心系統類,替換或刪除標準函式,並以任何你想要的方式擴充套件控制器,以實現可擴充套件性。

因此,你可以在不影響效能的情況下,通過快取修改來實現CodeIgniter的可延展性。

Laravel Laravel的可延展性圖

Laravel的可延展性圖。(圖片來源: DigitalOcean)

Laravel允許根據需要對其核心元件進行擴充套件。因此, 你可以新增到一個元素或以任何方式改變它。改變和增長請求物件讓你新增首選的幫助方法。

Laravel的可擴充套件性使它成為大規模應用的好選擇. 你可以通過HAProxy負載平衡器來平衡HTTP請求。更重要的是, 基於令牌的認證方法消除了考慮會話狀態的需要.

此外, 通過使用MySQL, AWS, 和其他先進的快取技術, 你可以輕鬆地擴充套件Laravel應用程式。

內建模組

模組允許你將複雜的網路應用分成更小的模組,以加快開發速度。當涉及到內建模組時, CodeIgniter和Laravel有很大的不同.

CodeIgniter

CodeIgniter沒有提供任何模組化功能。因此, 要把專案分成不同的工作部分是很有挑戰性的.

然而,如果你使用模組化擴充套件建立一個,在CodeIgniter中模組化是可能的。

Laravel

Laravel有內建的模組功能,鼓勵你將一個更大規模的專案分割成更小的模組。這種拆分使你能夠在一個專案的不同部分工作,而不需要處理整個專案。

使用模組化方法的另一個重要好處是,它帶有一個資料夾結構。它將你的功能安排在一個優越的目錄結構中。因此,你可以避免讓某個功能特有的類、模型、配置、翻譯等與其他模組重疊。

以下是一些預設的Laravel包的列表,有助於加快開發速度:

  • Passport:Laravel Passport快速實現了一個OAuth2伺服器,用於在你的Laravel應用中進行API認證。Alex Bilbie的聯盟OAuth2伺服器為它提供了動力。
  • Envoy:Envoy提供了一個簡潔的語法來設定你在遠端伺服器上執行的常規活動. Envoy目前只支援Mac和Linux裝置。
  • Cashier:Cashier為Stripe和Braintree訂閱計費系統提供了富有表現力、流暢的介面。它可以幫助你建立訂閱計費程式碼、優惠券、訂閱數量、取消寬限期和發票的PDF。
  • Scout:Scout將搜尋索引與Eloquent記錄同步,併為Eloquent模型新增全文搜尋。
  • Socialite:Socialite為Facebook、Twitter、Google、LinkedIn、GitHub和Bitbucket提供了一個易於使用的OAuth介面。

學習曲線

如果你有PHP經驗,CodeIgniter和Laravel應該很熟悉。然而,這兩個框架都有明顯不同的功能,可能會導致例外情況的發生。

CodeIgniter

CodeIgniter是一個相對簡單的框架,可以學習和開始工作,它在很多方面類似於從頭開始使用PHP。CodeIgniter的安裝過程也是非常簡單的。它只需要幾秒鐘的時間。

由於CodeIgniter的內建功能很少,你必須從外部安裝外掛以獲得更多的高階功能。它們可能看起來很複雜,但平均來說,它們比其他框架的外掛相對容易。

Laravel

如果你熟悉PHP和MVC架構,你可以很容易理解Laravel的功能。然而,如果你是一個初學者,學習Laravel的特點, 乍一看似乎很有挑戰性。

例如, 在沒有Laravel知識的情況下,你可能需要大量的研究和理解才能開始使用模組,或者資料夾結構看起來很有挑戰性,難以理解。

Laravel的安裝比CodeIgniter的安裝更復雜。然而,你可以從官方文件中獲取Laravel的安裝說明,這將使你的工作更加簡單。

結構和靈活性

Laravel和CodeIgniter都在其架構中使用了MVC框架。但兩者對相同的結構有不同的使用方式。

CodeIgniter CodeIgniter應用架構

CodeIgniter應用架構。(圖片來源:Krishna Web Developers)

CodeIgniter是為了在較短的時間內,在一個整潔的環境中提供頂級的效能。因此,開發過程的每個階段都是為了達到最佳的可用性。

有趣的是,在CodeIgniter中,模型和檢視是可選的。只有控制器是強制性的。因此,由於CodeIgniter的物件導向程式設計(OOP)的基礎,它對MVC不是特別嚴格。

因此,在使用CodeIgniter時,你不必完全依賴MVC結構。它給了你更多的開發自由和靈活性。

CodeIgniter中的MVC分離了資料、表現和邏輯,它提供了內建的元件來管理電子郵件、資料庫和會話。更重要的是,這些內建功能獨立於其他部分工作,所以它很容易維護和升級。

Laravel Laravel框架的工作流程

Laravel框架的工作流程。(圖片來源:How-To Geek)

作為另一個PHP框架, Laravel也是基於MVC架構的。但與CongeIgniter不同,Laravel嚴格遵循MVC架構。因此, Laravel可以熟練地維護MVC結構,從歸檔到內部操作。

啟動起來相當簡單。首先,你必須建立一個模型,生成一個資料庫表。然後,使用控制器檔案與該模型互動,在檢視檔案中顯示結果。

然而,如果你不熟悉MVC架構,使用Laravel框架可能會很困難,因為它不允許你忽略這個結構。

效能(速度)

PHP框架的效能基準

PHP框架的效能基準

PHP以其穩定性而不是速度而聞名。因此,CodeIgniter和Laravel在談到速度時有點羞澀。

也就是說,有明顯的差異,儘管是小規模的。

然而,你可以使用智慧快取策略和優化資料庫訪問來提高你的PHP效能基準

CodeIgniter

CodeIgniter是一個輕量級的框架,其核心只需要幾個小的庫。而如果核心繫統需要任何額外的庫,它將根據請求載入。因此,CodeIgniter的核心繫統比Laravel更精簡,更快速。

CodeIgniter也比Laravel略快一些,這要歸功於它更高的執行率。例如,它可以比Laravel快20%的速度執行請求。

值得注意的是,CodeIgniter的效能取決於專案因素,如併發使用者的數量。

Laravel Laravel的執行時間

Laravel的執行時間。(圖片來源: Medium)

簡而言之, Laravel比CodeIgniter要慢。然而,Laravel就像一輛拖拉機在平穩的拖車上拉著重物,所以不要把速度和力量混為一談。

好訊息是, 如果你想讓Laravel執行得更快,你可以通過適當的優化來加速它。

通過實現Laravels智慧配置和路由快取,限制未使用的庫,優化classmap和composer自動載入,並使用JIT編譯器和佇列,你可以優化Laravel的效能和你的應用程式的載入時間,至少20ms。

錯誤處理

錯誤處理是指一個程式從錯誤中恢復並繼續正常執行的過程。它預測, 檢測, 和修復應用程式, 程式設計, 和通訊錯誤.

CodeIgniter和Laravel都有錯誤處理系統,但他們處理日誌通知的方式不同。

CodeIgniter

CodeIgniter包括一個簡單的錯誤處理系統。它在開發和測試中顯示所有的錯誤,但在生產中顯示無。你可以通過編輯.env檔案和設定 CI ENVIRONMENT 變數來改變這一點。

CodeIgniter生成三種型別的資訊:

  • 錯誤資訊
  • 除錯資訊
  • 資訊性訊息

CodeIgniter的錯誤記錄功能允許你將錯誤儲存為文字檔案。它生成的錯誤資訊與類或函式範圍無關。

Laravel Laravel的錯誤處理

Laravel的錯誤處理。(圖片來源: Wikitechy)

Laravel有一個內建的錯誤處理系統,會通知你每一個錯誤。它可以自動檢測和記錄錯誤和異常,並將報告傳送給你,以便採取進一步行動。

你可以在 App\Exceptions\Handler 類中找到異常日誌。該類有兩個方法:

  • report () 方法
  • render () 方法

受歡迎程度和就業市場

CodeIgniter vs Laravel 谷歌趨勢

CodeIgniter vs Laravel 谷歌趨勢

CodeIgniter和Laravel是PHP框架中最受歡迎的。每個框架都有其使用者群,選擇它們的部分原因是它們的重要性。

讓我們根據這兩個框架在不同平臺和社羣的使用比例來比較它們的受歡迎程度和就業市場。

CodeIgniter

根據多項統計,CodeIgniter是繼Laravel之後第二大最受歡迎的PHP框架。CodeIgniter在GitHub上有18.2k顆星

儘管一些專業人士可能不太會選擇CodeIgniter作為他們的工具,但許多大型知名企業都依賴它。Unified Infotech、Zendesk、Space India、Casio Computer Co.、Nissan和McClatchy都是使用CodeIgniter的公司,這表明開發人員的就業市場穩定而有前景。

根據ZipRecruiter的工資資料,CodeIgniter開發人員在美國各地的年收入在66,000美元到105,000美元之間。

Laravel

JetBrains的研究表明,50%的PHP使用者目前正在使用Laravel。專業人士特別喜歡它的極端穩定性和處理廣泛和複雜系統的能力。

根據從各種技術來源,社會媒體,和線上討論論壇中彙編的資料,它的受歡迎程度排名很高。例如,在GitHub上,Laravel有71.2k顆星,這反映了該框架的受歡迎程度。

最受歡迎的後端框架

最受歡迎的後端框架。(圖片來源:統計與資料)

像Pfizer, BBC, About You, and TourRadar這樣的大公司使用Laravel來建立和維護數字平臺. 此外, 像Laracasts, Barchart, 和AsgardCMS這樣流行的應用程式也使用Laravel作為他們的後臺伺服器。

根據Glassdoor的資料,大多數Laravel開發者的年薪大致在83,000美元到166,000美元。

支援和社羣

在很長一段時間裡,PHP一直是一項值得信賴的技術。因此,相當多的使用者依賴於PHP和它的框架。

由於這個原因,PHP使用者和開發人員也關注每個框架。因此,這個社羣非常重要,如果你尋求幫助,你會得到很多幫助。那裡很簡單。當你需要的時候向有經驗的使用者學習,當別人尋求幫助的時候指導他們。

CodeIgniter

CodeIgniter在其官方網站上有大量的文件,解釋並涵蓋了它的大部分功能。它可以成為你學習和支援的主要和官方資源。

CodeIgniter在Facebook、Reddit、Stack Overflow、LinkedIn和類似平臺上有幾個活躍的社羣。這些社羣有成千上萬的成員,他們經常釋出和分享相關的CodeIgniter和PHP內容。

無論你是初學者還是高階CodeIgniter開發者,我們都建議你加入上面列出的社羣。在那裡,你可以學到一切在官方文件中找不到的知識。

Laravel

Laravel是網路開發者中最受歡迎的PHP框架。因此,它在GitHub, Facebook, LinkedIn, Reddit, Stack Overflow, 和許多其他線上論壇上有一個龐大的開發者社羣。

每個社羣中心都很活躍,提供與Laravel相關的重要建議和無盡的支援。如果你正在使用Laravel,這些社羣可以幫助你 – 或者你可以代替他們幫助你。

此外,Laravel官方網站有組織良好的文件,如果你想學習如何使用Laravel,這是一個很好的開始。

模板和API

儘管都是PHP框架,CodeIgniter和Laravel有不同的模板引擎理念。然而,他們共同關注的是使用API。

CodeIgniter

CodeIgniter帶有一個基本的模板引擎,稱為模板解析器類。你可以在使用CodeIgniter的時候處理純HTML和CSS檔案。你也可以整合一些第三方的模板引擎,如Smarty或Twig。

CodeIgniter還提供了一個API響應特性,你可以在任何控制器中使用,以簡化常見的響應型別,而不必記住要返回哪個HTTP狀態程式碼

Laravel

Laravel包括一個被稱為Blade的模板引擎。Blade的語法結構簡單而豐富。Blade比許多模板引擎更加連貫和簡單,因為它類似於普通的HTML檔案。

Laravel有一個簡單的API認證解決方案,使用一個隨機的令牌提供給每個使用者。所以, 在你的config/auth.php配置檔案中已經指定了一個帶有令牌驅動的API防護。

更重要的是, Laravel的資源豐富的控制器使得建立Restful APIs變得簡單. 例如, 在routes/API中, 你可以為資源豐富的控制器製作一個路由。

語法

CodeIgniter有一個叫Template Parser Class的模板引擎, 但這不是必須的; 事實上, 使用純PHP可以使檢視檔案執行得更快.

另一方面,Laravel專門使用Blade模板語法。

讓我們更詳細地討論一下每一個。

CodeIgniter

CodeIgniter是物件導向的, 依靠PHP, HTML, 和CSS來構建Web應用. CodeIgniter也不需要模板引擎,但有些開發者喜歡它們,所以如果你願意,模板解析器類就在那裡供你使用。所以,你既可以使用PHP的內建模板引擎,也可以新增第三方工具如Smarty。

接下來,讓我們看一下CodeIgniter的一些語法:

CodeIgniter控制器

  • CI_Controller
  • default
  • index

CodeIgniter變數

  • $config
  • $db
  • $lang

CodeIgniter函式

  • is_php()
  • is_really_writable()
  • load_class()
  • is_loaded()
  • get_config()
  • config_item()
  • show_error()
  • show_404()
  • log_message()
  • set_status_header()
  • get_mimes()
  • html_escape()
  • remove_invisible_characters()
  • is_https()
  • function_usable()
  • get_instance()
  • _error_handler()
  • _exception_handler()
  • _stringify_attributes()

CodeIgniter常量

  • ENVIRONMENT
  • FCPATH
  • SELF
  • BASEPATH
  • APPPATH
  • VIEWPATH
  • CI_VERSION
  • MB_ENABLED
  • ICONV_ENABLED
  • UTF8_ENABLED
  • FILE_READ_MODE
  • FILE_WRITE_MODE
  • DIR_READ_MODE
  • DIR_WRITE_MODE
  • FOPEN_READ
  • FOPEN_READ_WRITE

模板解析器類

讓我們來看看模板解析器類的使用情況。你可以像CodeIgniter中的其他類一樣初始化它:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$this->load->library('parser');
$this->load->library('parser');
$this->load->library('parser');

解析模板

你可以使用 parse() 來渲染簡單的模板:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$data = array(
'blog_title' => 'My Blog Title',
'blog_heading' => 'My Blog Heading'
);
$this->parser->parse('blog_template', $data);
$data = array( 'blog_title' => 'My Blog Title', 'blog_heading' => 'My Blog Heading' ); $this->parser->parse('blog_template', $data);
$data = array(
'blog_title' => 'My Blog Title',
'blog_heading' => 'My Blog Heading'
);
$this->parser->parse('blog_template', $data);

安全類

在安全類方面,你可以使用 xss clean() 方法用XSS過濾器來過濾資料:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$data = $this->security->xss_clean($data);
$data = $this->security->xss_clean($data);
$data = $this->security->xss_clean($data);

跨站請求偽造(CSRF)

對你的application/config/config.php檔案做如下修改,就可以實現CSRF保護:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$config['csrf_protection'] = TRUE;
$config['csrf_protection'] = TRUE;
$config['csrf_protection'] = TRUE;

Laravel

正如我們前面所討論的,Laravel採用了內建的Blade模板引擎和它的語法。Blade使使用模板引擎和編寫語法變得簡單。

Laravel的Blade是以條件式和迴圈式為結構的。它也是非常人性化的。例如,要製作一個Blade模板,你只需要把檢視檔案儲存為.blade.php而不是.php

Laravel的Blade語法

Laravel的Blade語法。(圖片來源: Medium)

接下來讓我們來看看一些Laravel Blade的語法。

顯示資料

把一個變數的值放在大括號之間來列印它:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{$variable}};
{{$variable}};
{{$variable}};

Blade迴圈

Blade 模板引擎提供的迴圈指令是: @for@endfor@foreach@endforeach@while, 和 @endwhile

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
@for ($i = 0; $i < 10; $i++)
The current value is {{ $i }}
@endfor
@foreach ($users as $user)
This is user {{ $user->id }}
@endforeach
@forelse ($users as $user)
{{ $user->name }}
@empty
No users
@endforelse
@while (true)
I'm looping forever.
@endwhile
@for ($i = 0; $i < 10; $i++) The current value is {{ $i }} @endfor @foreach ($users as $user) This is user {{ $user->id }} @endforeach @forelse ($users as $user) {{ $user->name }} @empty No users @endforelse @while (true) I'm looping forever. @endwhile
@for ($i = 0; $i < 10; $i++)
The current value is {{ $i }}
@endfor
@foreach ($users as $user)
This is user {{ $user->id }}
@endforeach
@forelse ($users as $user)
{{ $user->name }}
@empty
No users
@endforelse
@while (true)
I'm looping forever.
@endwhile

三元運算子

Blade中的三元操作符是Laravel對 if-else 語句的替代:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{ User::has('email') ? 'Yes' : 'No' }}
{{ User::has('email') ? 'Yes' : 'No' }}
{{ User::has('email') ? 'Yes' : 'No' }}

If語句

你可以用指令建立if語句: @if@elseif@else, 和 @endif。這些指令的功能與它們的PHP對應物相同:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
@if (count($records) === 1)
I have one record!
@elseif (count($records) > 1)
I have multiple records!
@else
I don't have any records!
@endif
@if (count($records) === 1) I have one record! @elseif (count($records) > 1) I have multiple records! @else I don't have any records! @endif
@if (count($records) === 1)
I have one record!
@elseif (count($records) > 1)
I have multiple records!
@else
I don't have any records!
@endif

原生PHP

偶爾,在你的檢視中新增PHP程式碼是有益的。例如,你可以使用Blade  @php 指令來執行模板中的一個簡單的PHP塊:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
@php
$counter = 1;
@endphp
@php $counter = 1; @endphp
@php
$counter = 1;
@endphp

堆疊

Blade允許你推送到命名的堆疊,你可以在不同的檢視或佈局中渲染。指定你的孩子的檢視需要哪些JavaScript庫很有用:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
@push('scripts')
@endpush
@push('scripts') @endpush
@push('scripts')
@endpush

CSRF欄位

你可以在你的應用程式的HTML表單定義中包含一個隱藏的CSRF令牌欄位,以便中介軟體可以檢查請求。使用 @csrf Blade指令,你可以生成該令牌欄位:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
@csrf
...
@csrf ...
@csrf
...

CodeIgniter vs Laravel:比較表

讓我們把CodeIgniter與Laravel進行並列比較,並對一些最基本的程式設計引數進行研究:

CodeIgniter Laravel
建立於 2006 2011
類目 網路開發框架 網路開發框架
基於 PHP PHP
架構 MVC MVC Strict
開放原始碼 開源框架 開源框架
PHP最低版本要求 7.3 8.0
可擴充套件性 支援可擴充套件性 支援可擴充套件性
可伸縮性 Scalable Framework Super Scalable Framework
學習曲線 相對容易 在使用高階功能時,有點挑戰性。
市場份額 0.22% 0.32%
GitHub星星數 18.2k 69.5k
內建模組 不提供內建模組 提供內建模組
模板引擎 PHP專有 Blade模板引擎
資料庫模型 物件導向 物件導向的關係型
程式設計正規化 物件導向的事件驅動的功能型 面向元件
HTTP支援 不支援HTTPS 支援自定義HTTPS路由
認證 不提供內建認證 提供內建認證
單元測試 不提供內建的單元測試支援 提供內建的單元測試支援
資料庫支援 MySQL, PostgreSQL, SQLite3 MariaDB, MYSQL, PostgreSQL, SQLite3, SQL Server

CodeIgniter vs Laravel:你應該選擇哪個?

到目前為止, 你已經瞥見了這兩個PHP框架的大部分優點和缺點。而且你也知道,儘管有著相同的根基,CodeIgniter和Laravel都有他們的不同之處和自己的優勢領域。

這兩個框架都包含了大量的功能,以適合你的開發過程的方式,使用PHP來簡化,穩定,安全和擴充套件你的專案。

因此,你需要確定你想構建的系統的型別和所涉及的必要技術,然後才能選擇其中一個而不是另一個。

下面是一些想法,可能有助於你決定是否以不同的方式使用CodeIgniter與Laravel。像往常一樣, 每個開發者的偏好都是不同的。

何時使用CodeIgniter

如果你的專案需要以下條件,你可以使用CodeIgniter:

  • 更好的結果,更少的程式碼: CodeIgniter以用更少的程式碼行產生更好的結果而聞名。它加速了Web應用的開發,因為你不需要第三方庫。
  • 簡單、無誤的配置:CodeIgniter有一個線性和靈活的資料夾結構,有助於簡化PHP語法。這種構造風格使你能夠快速建立Web應用程式而不會遇到語法錯誤。CodeIgniter對於簡單的、可擴充套件的網站來說效果很好。
  • 更快的效能:憑藉更快的執行率和開發過程,CodeIgniter執行在Laravel之前。選擇CodeIgniter來建立一個快速、高效的網站。然而,對於大型網站來說,效能可能會有所不同。
  • 你是一個初學者:如果你是一個想要建立一個應用程式的新開發者,那麼CodeIgniter是最好的選擇。它為你保持了一切的簡明和精簡。

何時使用Laravel

Laravel的使用案例

Laravel的使用案例。(圖片來源: Aglowid)

如果你的專案需要以下任何一種情況, 你應該使用Laravel:

  • 大型, 複雜的網站:對於有多個操作同時執行的大型網站,Laravel是一個更好的選擇。這個框架有深度,可以熟練地處理更復雜的系統,而CodeIgniter在處理大型專案時可能會有困難。
  • 數值計算:如果你的網站需要進行數值分析,Laravel可能是一個更好的選擇 – 例如,股票或交易網站。它可以處理更大的資料集, 而且它的多執行緒可以執行復雜的計算而不影響效能.
  • 快速開發:由於它的預建模板和社羣協助,Laravel是最快速的應用開發框架之一。
  • 高安全性:Laravel有一個內建的安全和授權系統, 採用BCrypt雜湊演算法進行密碼加密. 此外, Laravel禁止在資料庫中儲存明文密碼. 所以, 如果你想要一個高安全性的網站, Laravel是你的首選.
  • 你是一個專家:如果你是一個有經驗的Laravel開發者,有包括中間系統的工作背景,Laravel可能是你的理想工具。

小結

CodeIgniter和Laravel是PHP的繼承者。最近幾年,全世界的程式設計師都在稱讚這些框架的獨特功能和實用性。

CodeIgniter和Laravel都有各自的好處,但最終,你的使用者需求和你的開發過程應該決定你使用哪種框架。

每一個都是可靠和有效的,並將在未來很長一段時間內保持一個可行的開發選擇。然而,一種技術可能會滿足你所有的需求,而另一種技術可能會有不足。

與其尋找最強大的,不如尋找為你的專案及其範圍提供最可靠和有效的解決方案的技術。

評論留言