在這次的新單元中,我們將介紹Laravel這個框架以及它所實現的一些功能。
Laravel是一個開源的PHP網頁框架,支援MVC架構。
最重要的是,目前Laravel持續有穩定的更新版本,這代表框架本身會不斷修正漏洞並增加新功能,實在非常方便。
此外,在進行版本升級時,官方會提供文件來提醒開發者需要注意的事項。如果需要專業評估,還有網站可以幫助你評估專案的升版項目,參考連結:Laravel Shift。
由於 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(Data Transfer Object)主要用於資料傳輸,通常只包含資料的欄位及對應的 getter
和 setter
方法,而不涉及業務邏輯的處理。一般來說,DTO 用於層與層之間的資料傳遞。
VO(Value Object)則主要用於封裝特定值的相關內容(包括業務邏輯),而且 VO 的內容是不可變的,因此其參數通常具有constant屬性。一般來說,VO 用於模型層,以便於處理相關邏輯。
在 MVC 架構中,DTO 與 VO 的概念容易混淆。簡單來說,兩者的區別在於資料的取得方式和傳遞方式:DTO 強調的是欄位的內容,僅用來傳遞本身的值,而 VO 則可以取得業務邏輯後的內容,但只能取得固定的值。
Laravel 的開發團隊推出了一個 Coding Style 的套件。如果你的團隊尚未決定自己的編碼風格,不妨試試 Laravel Pint。你可以參考這篇介紹文章:使用 Laravel 團隊的 Coding Style 簡單介紹 Laravel Pint。
根據筆者的經驗,在臺灣使用 PHP 的企業中,大約有一半採用 Laravel 框架,另一半則使用 Yii2。個人而言,我認為 Laravel 的擴展性明顯更高,使用上也更加便利,因此我才特別開設這個單元來介紹 Laravel。