Laravel 系列 - 1: Laravel 介紹與架構

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

在這次的新單元中,我們將介紹Laravel這個框架以及它所實現的一些功能。

簡介

Laravel是一個開源的PHP網頁框架,支援MVC架構。

最重要的是,目前Laravel持續有穩定的更新版本,這代表框架本身會不斷修正漏洞並增加新功能,實在非常方便。

此外,在進行版本升級時,官方會提供文件來提醒開發者需要注意的事項。如果需要專業評估,還有網站可以幫助你評估專案的升版項目,參考連結:Laravel Shift

MVC 架構

由於 Laravel 框架本身支援 MVC 架構,我想先為不熟悉 MVC 的讀者簡單介紹一下各層級。

MVC 架構,顧名思義,就是將模型(Model)、視圖(View)和控制器(Controller)三個部分區隔開來,這樣開發者在開發與維護時會更為方便。不過這只是最基礎的架構,實作上我們往往還會細分出各種層級以實現各個步驟。

  • 中介層 withMiddleware:針對指定路徑進行中介處理,例如身份驗證(Auth)、API管理(APIM)等。
  • 排除中介層 withoutMiddleware:針對特定路徑排除相關的中介處理,常用於單元測試。
  • 服務層 Repository:專門負責取得欄位內容或資料本身。
  • 資料交互層 Service:負責數值操作與處理,例如針對某位使用者的使用紀錄進行推薦。

另外,Laravel 也支援排程功能,只需將要執行的排程指令寫在 app\Console\Commands 目錄下即可!詳情請見: https://ithelp.ithome.com.tw/articles/10222395。

DTO 與 VO

DTO(Data Transfer Object)主要用於資料傳輸,通常只包含資料的欄位及對應的 gettersetter 方法,而不涉及業務邏輯的處理。一般來說,DTO 用於層與層之間的資料傳遞。

VO(Value Object)則主要用於封裝特定值的相關內容(包括業務邏輯),而且 VO 的內容是不可變的,因此其參數通常具有constant屬性。一般來說,VO 用於模型層,以便於處理相關邏輯。

在 MVC 架構中,DTO 與 VO 的概念容易混淆。簡單來說,兩者的區別在於資料的取得方式傳遞方式:DTO 強調的是欄位的內容,僅用來傳遞本身的值,而 VO 則可以取得業務邏輯後的內容,但只能取得固定的值。

Coding Style

Laravel 的開發團隊推出了一個 Coding Style 的套件。如果你的團隊尚未決定自己的編碼風格,不妨試試 Laravel Pint。你可以參考這篇介紹文章:使用 Laravel 團隊的 Coding Style 簡單介紹 Laravel Pint

總結

根據筆者的經驗,在臺灣使用 PHP 的企業中,大約有一半採用 Laravel 框架,另一半則使用 Yii2。個人而言,我認為 Laravel 的擴展性明顯更高,使用上也更加便利,因此我才特別開設這個單元來介紹 Laravel。

參考資料

  1. https://laravel.com/
  2. https://zh.wikipedia.org/zh-tw/Laravel
  3. https://laravelshift.com/
  4. https://docfunc.com/posts/87/使用-laravel-團隊的-coding-style簡單介紹-laravel-pint-post
  5. https://www.explainthis.io/zh-hant/swe/mvc
  6. https://laravel.com/docs/11.x/middleware#excluding-middleware
  7. https://ithelp.ithome.com.tw/articles/10268778?sc=rss.iron
  8. https://ithelp.ithome.com.tw/articles/10222395
avatar-img
2會員
33內容數
test
留言1
avatar-img
留言分享你的想法!

































































林柏宇的沙龍 的其他內容
本文探討控制反轉(IoC)和依賴注入的設計原則,解釋如何利用這些理念降低程式碼的耦合度,提高可擴展性和測試性。通過案例說明,控制反轉改變了程式控制的方式,並介紹依賴注入的三種注入方式及其在 Laravel 框架中的應用。讀者將能夠理解這些設計原則在實際專案中的重要性。
本文章深入探討物件導向程式設計的三大核心特性,包括封裝、多型和繼承。這些特性對於建立模組化、可擴充以及易於維護的程式架構至關重要。封裝確保資料的隱私和完整性,多型實現靈活的系統設計,繼承則促進程式碼的重用。瞭解這些概念將幫助開發者設計更高效的程式系統。
本文探討物件導向編程及其在面試中常見的必備知識,特別是物件導向與程序導向的基本概念與特性分析。此外,介紹了物件導向的五大原則——SOLID,分別為單一功能原則、開放封閉原則、里氏替換原則、介面隔離原則及依賴反轉原則,重點在於提高程式的維護性與擴展性。這些原則對於現代軟體設計具有重要的指導意義。
本文章詳細介紹了 PHP 的依賴管理工具 Composer 的運作原理,包括如何使用 Composer 進行下載、更新依賴的流程,並提供了在專案中正確運用這個工具的實用建議。透過本文,讀者將能夠更好地理解 Composer 的重要性及其背後的機制,確保專案運行的穩定性。
本文探討PHP中的類別、介面和抽象類別的基本概念與差異。雖然這些知識可能對初學者幫助不大,但對於資深工程師來說,理解這些概念有助於建立更加優雅的架構和維持代碼的整潔。內容涵蓋了類別的封裝、繼承、多型,及介面和Traits的使用規範,提供程式設計師在日常開發中的參考和指導。
本文專注於策略模式,旨在通過將函數封裝為策略來簡化程式碼的維護與測試。隨著專案規模的擴大,重構的重要性顯著提高,而策略模式能有效減少程式碼中的條件語句,提升可讀性與易測性。透過範例介紹策略模式在加減乘除計算中的應用,並討論其優點與實作注意事項,幫助工程師更有效地應用此模式以應對程式碼維護挑戰。
本文探討控制反轉(IoC)和依賴注入的設計原則,解釋如何利用這些理念降低程式碼的耦合度,提高可擴展性和測試性。通過案例說明,控制反轉改變了程式控制的方式,並介紹依賴注入的三種注入方式及其在 Laravel 框架中的應用。讀者將能夠理解這些設計原則在實際專案中的重要性。
本文章深入探討物件導向程式設計的三大核心特性,包括封裝、多型和繼承。這些特性對於建立模組化、可擴充以及易於維護的程式架構至關重要。封裝確保資料的隱私和完整性,多型實現靈活的系統設計,繼承則促進程式碼的重用。瞭解這些概念將幫助開發者設計更高效的程式系統。
本文探討物件導向編程及其在面試中常見的必備知識,特別是物件導向與程序導向的基本概念與特性分析。此外,介紹了物件導向的五大原則——SOLID,分別為單一功能原則、開放封閉原則、里氏替換原則、介面隔離原則及依賴反轉原則,重點在於提高程式的維護性與擴展性。這些原則對於現代軟體設計具有重要的指導意義。
本文章詳細介紹了 PHP 的依賴管理工具 Composer 的運作原理,包括如何使用 Composer 進行下載、更新依賴的流程,並提供了在專案中正確運用這個工具的實用建議。透過本文,讀者將能夠更好地理解 Composer 的重要性及其背後的機制,確保專案運行的穩定性。
本文探討PHP中的類別、介面和抽象類別的基本概念與差異。雖然這些知識可能對初學者幫助不大,但對於資深工程師來說,理解這些概念有助於建立更加優雅的架構和維持代碼的整潔。內容涵蓋了類別的封裝、繼承、多型,及介面和Traits的使用規範,提供程式設計師在日常開發中的參考和指導。
本文專注於策略模式,旨在通過將函數封裝為策略來簡化程式碼的維護與測試。隨著專案規模的擴大,重構的重要性顯著提高,而策略模式能有效減少程式碼中的條件語句,提升可讀性與易測性。透過範例介紹策略模式在加減乘除計算中的應用,並討論其優點與實作注意事項,幫助工程師更有效地應用此模式以應對程式碼維護挑戰。
你可能也想看
Google News 追蹤
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
CodeIgniter 3 和 Laravel 是兩種不同的 PHP 框架,各有其特點和適用場景。CodeIgniter 3 是一個輕量級框架,Laravel 是一個功能強大的現代 PHP 框架,同樣都有Models的它們有什麼樣的差別呢?
Thumbnail
在本章節中,我們探討了 PHP 中如何引用和管理套件。學習了如何使用 Composer 來安裝第三方套件,以及如何引用自定義模組。此外,我們還介紹了如何創建和使用自定義套件,並列舉了一些在 PHP 社群中常見且廣泛使用的套件和庫。通過掌握這些知識,開發者可以更有效地管理和利用各種資源。
Thumbnail
這一章節旨在介紹 PHP 中的物件導向編程(OOP)概念。通過詳細講解類別、建構子、訪問修飾符(公開、私有、受保護)、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型和反射等概念,使讀者能夠理解和應用這些 OOP 技術來編寫更具結構性和可維護性的 PHP 代碼。
Thumbnail
這個章節介紹了PHP的基本特性和應用領域,並且列舉了使用PHP的知名公司和網站。了解PHP的簡單易學、跨平台、嵌入HTML等特性,以及PHP在動態網站、電子商務、內容管理系統、社交媒體平台、數據庫管理和API開發中的應用。
Thumbnail
有的時候,會希望在物件導向中對原生的Class新增功能的時候,大多我們都會寫一個新的class並繼承。 但是其實Laravel提供了一個不同的方式,讓我們可以在常用的Class上,直接新增想要的function,那就是macro。
Thumbnail
PHP(全名為「PHP: Hypertext Preprocessor」)是一門開源的伺服器端程式語言,為動態網頁開發設計。閱讀本文將讓您瞭解PHP的特點、廣泛支援、易學性、資源豐富以及跨平臺性。
PHP(Hypertext Preprocessor)是一種流行的開源腳本語言,特別適用於網頁開發。它具有簡單的語法和易於理解的程式碼結構,並且支持多種數據庫系統和其他技術和框架集成。本文將介紹PHP的主要特點和廣泛應用性。
Migration在 Laravel 中是一種用來管理資料庫結構變更的機制。它的主要目的是使開發者能夠在應用程序的不同環境中保持資料庫結構的一致性,並輕鬆地進行結構變更
指令在現代 Laravel Web Applications 中,也是一個相當常見的應用,而 Laravel 也為此準備許多方便實現測試的函數,以下就來為大家介紹: artisan() 函數簽名: artisan($command, $parameters = []) 函數說明:這應該是指令測
前置: Factory & UserRepository 在開始實作資料庫測試之前,先與大家介紹 Factory 這個東西。 Factory 是個 Laravel 的 ORM:Eloquent 提供的功能,它可以讓我們用很簡單的方式,去準備測試資料,在 Laravel 初始化後,預設已經幫我們準
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
CodeIgniter 3 和 Laravel 是兩種不同的 PHP 框架,各有其特點和適用場景。CodeIgniter 3 是一個輕量級框架,Laravel 是一個功能強大的現代 PHP 框架,同樣都有Models的它們有什麼樣的差別呢?
Thumbnail
在本章節中,我們探討了 PHP 中如何引用和管理套件。學習了如何使用 Composer 來安裝第三方套件,以及如何引用自定義模組。此外,我們還介紹了如何創建和使用自定義套件,並列舉了一些在 PHP 社群中常見且廣泛使用的套件和庫。通過掌握這些知識,開發者可以更有效地管理和利用各種資源。
Thumbnail
這一章節旨在介紹 PHP 中的物件導向編程(OOP)概念。通過詳細講解類別、建構子、訪問修飾符(公開、私有、受保護)、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型和反射等概念,使讀者能夠理解和應用這些 OOP 技術來編寫更具結構性和可維護性的 PHP 代碼。
Thumbnail
這個章節介紹了PHP的基本特性和應用領域,並且列舉了使用PHP的知名公司和網站。了解PHP的簡單易學、跨平台、嵌入HTML等特性,以及PHP在動態網站、電子商務、內容管理系統、社交媒體平台、數據庫管理和API開發中的應用。
Thumbnail
有的時候,會希望在物件導向中對原生的Class新增功能的時候,大多我們都會寫一個新的class並繼承。 但是其實Laravel提供了一個不同的方式,讓我們可以在常用的Class上,直接新增想要的function,那就是macro。
Thumbnail
PHP(全名為「PHP: Hypertext Preprocessor」)是一門開源的伺服器端程式語言,為動態網頁開發設計。閱讀本文將讓您瞭解PHP的特點、廣泛支援、易學性、資源豐富以及跨平臺性。
PHP(Hypertext Preprocessor)是一種流行的開源腳本語言,特別適用於網頁開發。它具有簡單的語法和易於理解的程式碼結構,並且支持多種數據庫系統和其他技術和框架集成。本文將介紹PHP的主要特點和廣泛應用性。
Migration在 Laravel 中是一種用來管理資料庫結構變更的機制。它的主要目的是使開發者能夠在應用程序的不同環境中保持資料庫結構的一致性,並輕鬆地進行結構變更
指令在現代 Laravel Web Applications 中,也是一個相當常見的應用,而 Laravel 也為此準備許多方便實現測試的函數,以下就來為大家介紹: artisan() 函數簽名: artisan($command, $parameters = []) 函數說明:這應該是指令測
前置: Factory & UserRepository 在開始實作資料庫測試之前,先與大家介紹 Factory 這個東西。 Factory 是個 Laravel 的 ORM:Eloquent 提供的功能,它可以讓我們用很簡單的方式,去準備測試資料,在 Laravel 初始化後,預設已經幫我們準