MVC的M與Laravel 的M有何不同

更新於 發佈於 閱讀時間約 5 分鐘

這個問題在剛學laravel 的朋友都會提到的問題,基於這個命題,我覺得可以再定義清楚,不然MVC這麼多種,又要怎麼比較 所以我們來一個完整的提問 >>

codeigniter MVC架構與laravel 框架的差別?



這裡的 Codeigniter 是 CodeIgniter 3,雖然 CodeIgniter 4以前就開始有ORM,到CodeIgniter 4之後有更完善ORM概念,但就我知道的使用CI的開發者還是習慣使用 $db→query('SQL語法', [參數])


所以…不免俗的我們要來比較一下,CodeIgniter 3 與 Laravel 框架的差別,,但我們還是會著重在 M 這個概念

架構與設計

  1. 架構風格:
    • CodeIgniter 3: 輕量級框架,偏向於簡單、快速的應用開發。提供了基本的 MVC (Model-View-Controller) 結構,但沒有強制開發者遵循特定的設計模式,靈活性高。
    • Laravel: 完整的現代 PHP 框架,強調優雅的語法和開發體驗。基於 MVC 架構,並且包含許多內建的工具和套件,如 Eloquent ORM、Blade 模板引擎、任務排程、事件系統等。
  2. 學習曲線:
    • CodeIgniter 3: 學習曲線較低,對新手友善,適合小型或快速開發的專案。
    • Laravel: 功能強大,但相對複雜,學習曲線較陡。適合中大型專案,或需要較多內建功能和擴展能力的應用。

MVC 架構中的 Model 差異

  1. CodeIgniter 3 的 Model:
    <?php

    class User_model extends CI_Model {
    public function get_users() {
    $query = $this→db→get('users');
    return $query→result();
    }
    }
    • 定義方式: 通常繼承 CI_Model 類別,開發者可以在 Model 中定義資料表查詢和業務邏輯。
    • 資料庫操作: 使用 CodeIgniter 自帶的 Active Record 查詢構造器,簡化了 SQL 查詢的書寫。
  2. Laravel 的 Model:
    <?php

    use Illuminate\Database\Eloquent\Model;

    class User extends Model {
    // 指定表名
    protected $table = 'users';

    // 自動填充屬性
    protected $fillable = ['name', 'email', 'password'];
    }
    • 定義方式: 通常繼承 Illuminate\Database\Eloquent\Model 類別,使用 Eloquent ORM 提供的功能來進行資料庫操作。
    • 資料庫操作: Eloquent ORM 是 Active Record 模式的實現,提供豐富的查詢構造器和關聯關係處理。


MVC 的 M (Model) 與 Eloquent Models 的比較

  1. 資料表映射:
    • CodeIgniter: 開發者需要手動配置和使用資料表,不提供自動映射。
    • Laravel: Eloquent 自動將 Model 類別與資料表對應,預設根據類別名推斷表名,且可以自定義。
  2. 關聯關係:
    • CodeIgniter: 沒有內建的關聯關係支持,需自行編寫邏輯處理。
    • Laravel: Eloquent 提供簡單易用的關聯方法(如 hasMany、belongsTo 等),支持一對一、一對多、多對多等關係。
  3. 資料庫遷移:
    • CodeIgniter: 沒有內建的資料庫遷移系統,需使用第三方工具或自行管理。
    • Laravel: 提供強大的資料庫遷移和種子工具,便於版本控制和自動化部署。
  4. 查詢構造器:
    • CodeIgniter: 使用 Active Record,查詢語法簡潔,但功能較為基礎。
    • Laravel: Eloquent 提供豐富的查詢構造器功能,並且可以鏈式調用,支持複雜查詢。



從開發的角度來看,CodeIgniter 3 是個簡單好上手的 MVC 框架,非常適合小型專案和需要快速開發的情況。它的彈性高,學習曲線也比較平緩,對新手來說很友善。相較之下,Laravel 則是功能強大且擴展性高的現代 PHP 框架,更適合中大型專案或需要豐富內建功能的應用。Laravel 的學習曲線較陡,但一旦掌握後,能大大提升開發效率。

在 Model 的實現上,CodeIgniter 的 Model 主要是自己手動配置資料表,適合簡單的查詢操作。而 Laravel 的 Eloquent ORM 則提供了自動映射資料表的功能,支持各種關聯關係和複雜的查詢,讓開發者可以更方便地處理資料庫操作。

總結來說,CodeIgniter 3 適合想要快速上手和簡單開發的開發者,而 Laravel 則適合追求高效能和擴展性的開發團隊。如果你的專案需求較為複雜,Laravel 會是更好的選擇;如果只是做個簡單的網站,CodeIgniter 3 會讓你輕鬆不少。

但...小孩才做選擇!兩個都學不就行了~

留言
avatar-img
留言分享你的想法!
avatar-img
詹姆士的軟體易開罐
27會員
88內容數
這是一系列以軟體開發為主題的輕鬆分享,內容涵蓋了技術選擇、開發經驗、實戰應用等多方面的議題。無論是如何在眾多框架中做出選擇,還是如何應對技術轉移的挑戰,這裡有幽默、有趣的對話風格,將複雜的技術問題轉化為易懂的故事。
2025/04/05
if寫得好,可以大大提高效率與可讀性。 Guard condition在函式起始先排除不合規輸入,能簡化結構、減少錯誤,使核心邏輯更聚焦並提高可維護性,也方便擴充與測試,在團隊協作和需求變動時,都能更快速應對。建議根據實際情況彈性運用,兼顧可讀性與維護成本。
Thumbnail
2025/04/05
if寫得好,可以大大提高效率與可讀性。 Guard condition在函式起始先排除不合規輸入,能簡化結構、減少錯誤,使核心邏輯更聚焦並提高可維護性,也方便擴充與測試,在團隊協作和需求變動時,都能更快速應對。建議根據實際情況彈性運用,兼顧可讀性與維護成本。
Thumbnail
2025/01/24
還記得我剛開始負責專案時,幾乎沒有人在意測試,改了程式碼就直接上線,結果小錯不斷、大災難頻傳。那種不知道哪裡會冒出 bug 的焦慮感,讓人每天都忙到焦頭爛額,卻依舊無從掌握系統品質。走過這段混亂的過程後,我才真正體會「為什麼需要測試」,也更明白「測試文化」並非只是技術細節。
Thumbnail
2025/01/24
還記得我剛開始負責專案時,幾乎沒有人在意測試,改了程式碼就直接上線,結果小錯不斷、大災難頻傳。那種不知道哪裡會冒出 bug 的焦慮感,讓人每天都忙到焦頭爛額,卻依舊無從掌握系統品質。走過這段混亂的過程後,我才真正體會「為什麼需要測試」,也更明白「測試文化」並非只是技術細節。
Thumbnail
2025/01/24
我想探討,從「個人測試」到「團隊測試策略」的思維轉換,強調測試不僅是個人的責任,更需要整個團隊的支持與參與。文章還提供了推動測試文化的具體建議,包括設定最小測試門檻、融入開發流程,以及如何克服常見的困境如進度壓力或技術債問題。
Thumbnail
2025/01/24
我想探討,從「個人測試」到「團隊測試策略」的思維轉換,強調測試不僅是個人的責任,更需要整個團隊的支持與參與。文章還提供了推動測試文化的具體建議,包括設定最小測試門檻、融入開發流程,以及如何克服常見的困境如進度壓力或技術債問題。
Thumbnail
看更多
你可能也想看
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
CodeIgniter 3 和 Laravel 是兩種不同的 PHP 框架,各有其特點和適用場景。CodeIgniter 3 是一個輕量級框架,Laravel 是一個功能強大的現代 PHP 框架,同樣都有Models的它們有什麼樣的差別呢?
Thumbnail
CodeIgniter 3 和 Laravel 是兩種不同的 PHP 框架,各有其特點和適用場景。CodeIgniter 3 是一個輕量級框架,Laravel 是一個功能強大的現代 PHP 框架,同樣都有Models的它們有什麼樣的差別呢?
Thumbnail
在本章節中,我們探討了 PHP 中如何引用和管理套件。學習了如何使用 Composer 來安裝第三方套件,以及如何引用自定義模組。此外,我們還介紹了如何創建和使用自定義套件,並列舉了一些在 PHP 社群中常見且廣泛使用的套件和庫。通過掌握這些知識,開發者可以更有效地管理和利用各種資源。
Thumbnail
在本章節中,我們探討了 PHP 中如何引用和管理套件。學習了如何使用 Composer 來安裝第三方套件,以及如何引用自定義模組。此外,我們還介紹了如何創建和使用自定義套件,並列舉了一些在 PHP 社群中常見且廣泛使用的套件和庫。通過掌握這些知識,開發者可以更有效地管理和利用各種資源。
Thumbnail
※ 原本狀態:伺服器渲染 這是 MVC 架構下的 request / response 示意圖,在這張圖呈現的架構裡,畫面和資料都由同一個架構處理。 伺服器渲染流程: 瀏覽器針對特定網址送出請求。 路由器解析請求後,轉接給對應的 controller。 controller 按照要求,透過
Thumbnail
※ 原本狀態:伺服器渲染 這是 MVC 架構下的 request / response 示意圖,在這張圖呈現的架構裡,畫面和資料都由同一個架構處理。 伺服器渲染流程: 瀏覽器針對特定網址送出請求。 路由器解析請求後,轉接給對應的 controller。 controller 按照要求,透過
Thumbnail
這個章節介紹了PHP的基本特性和應用領域,並且列舉了使用PHP的知名公司和網站。了解PHP的簡單易學、跨平台、嵌入HTML等特性,以及PHP在動態網站、電子商務、內容管理系統、社交媒體平台、數據庫管理和API開發中的應用。
Thumbnail
這個章節介紹了PHP的基本特性和應用領域,並且列舉了使用PHP的知名公司和網站。了解PHP的簡單易學、跨平台、嵌入HTML等特性,以及PHP在動態網站、電子商務、內容管理系統、社交媒體平台、數據庫管理和API開發中的應用。
Thumbnail
※ 視圖模板 視圖模板(View Templates) 是在 MVC 架構中負責展示數據的 HTML 文件,包含模板語法,用於在渲染時插入實際數據。它們的主要目的是分離數據與展示邏輯,讓代碼更加模塊化和易於維護。 視圖模板設計和使用的核心理念,就是「重複的事情不要重複做、效益最大化、有效利用資源
Thumbnail
※ 視圖模板 視圖模板(View Templates) 是在 MVC 架構中負責展示數據的 HTML 文件,包含模板語法,用於在渲染時插入實際數據。它們的主要目的是分離數據與展示邏輯,讓代碼更加模塊化和易於維護。 視圖模板設計和使用的核心理念,就是「重複的事情不要重複做、效益最大化、有效利用資源
Thumbnail
在PHP中可以用$this、self、與static代表自己這個類別,有些人可能搞不清楚他們的區別,尤其是self、與static,但是他們各別有自己的意義和用法,在實戰中這些些微的差別可能就會造成不可預期的問題,本文仔細說明了他們之間的差別。
Thumbnail
在PHP中可以用$this、self、與static代表自己這個類別,有些人可能搞不清楚他們的區別,尤其是self、與static,但是他們各別有自己的意義和用法,在實戰中這些些微的差別可能就會造成不可預期的問題,本文仔細說明了他們之間的差別。
Thumbnail
Codeigniter如果不調整設定,網址中會自帶index.php,為了符合MVC架構,通常會將它去除,本文將詳細說明處理步驟。
Thumbnail
Codeigniter如果不調整設定,網址中會自帶index.php,為了符合MVC架構,通常會將它去除,本文將詳細說明處理步驟。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News