Laravel 成為最佳 PHP 框架的 14 個理由!

語言: CN / TW / HK

點選進入“PHP開源社群”

免費獲取進階面試、文件、影片資源

在開發應用程式時選擇使用哪個框架,這將取決於很多因素。和其它任何應用程式框架一樣,Laravel框架也有其優缺點。撇開那些令人憎惡的缺點不談,這篇文章我們將把重點放在使用Laravel框架的優點上。在我開始討論Laravel的神奇之處之前,我想先花點時間討論一下為什麼我們要使用框架來開發應用程式。而不使用已有的框架,自己開發構建一個應用程式所需一切的潛在風險是什麼?

不使用框架來構建應用程式有什麼問題?

為了理解在不使用框架的情況下開發一個應用程式的潛在風險,讓我們假設,我們必須構建一個使用MVC(模型-檢視-控制器)架構模式的應用程式。當你開始設定架構時,我們需要根據應用程式的結構,從很多種架構模式中做出合適的選擇。當我想到如果我自己需要開發一套完整的應用程式體系架構時,我馬上想到了幾個問題。

首先,我應該從應用程式的哪個元件開始著手處理呢?是先安裝所有的第三方依賴項和庫嗎?從應用程式的可擴充套件性來考慮,我應該使用什麼樣的模型類(model class)庫來和資料庫進行互動?是使用PDO類呢,還是有更好的選擇?我將如何管理依賴注入?考慮到後期會有更多的開發人員在同一個應用程式上工作,我應該如何對這個體系結構做一個完整的記錄?

這些問題看起來很難回答,但是我想告訴你這些僅僅是個開始。很明顯,如果你不是一個熟悉MVC體系架構的程式設計者,那麼這些問題本身對你來說都是新問題。如果你以前沒有使用過任何框架,你可能從來沒有問過這些問題。如果是這樣的話,那麼這個理由本身就足以讓你採用Laravel框架進行應用程式開發。Laravel框架將為你處理所有這些低階的細節,併為你提供一個簡潔和實用的架構模式。同時,Laravel框架將為你處理模型、檢視和控制器之間的無縫互動。並且還將為你提供許多內建在框架中的不同功能,以便你可以專注於編寫應用程式的業務邏輯。最終,你因為不必花費時間尋找這些低階問題的解決方法,而節省大量的時間和精力。

框架提供了一致性和靈活性

讓我們試著想象一下這樣一種情形:你正在開發一個龐大的應用程式,但是沒有使用任何現成的框架或者使用自己構建的框架。當用戶數量增加或需要新增更多功能時,你將需要更多的開發人員來開發和維護這個應用程式。在新開發人員入職期間,你除了向他們介紹你的開發團隊需要遵循的軟體開發的所有流程步驟和方法之外,你還必須向他們講解你所構建的整個應用程式結構。

由於這個原因,新的開發人員必須通過一個高的學習曲線來理解你開發的新體系結構。但是如果你使用Laravel框架,這類問題將不復存在,因為這個框架會帶給你應用程式開發的一致性。Laravel框架有詳細的文件,新開發人員不必經歷使用新框架的學習過程。因為你可以很容易地聘請到一個熟悉Laravel框架的開發人員,並能讓他很快開始工作。

當一個團隊使用標準化框架(比如Laravel)來構建應用程式時,向團隊中新增其他開發人員就會變得很容易。這是因為:當你僱傭了一個熟悉Laravel框架的開發人員,他能夠理解這些程式碼,因為所有程式碼都遵循相同的模式。

使用Laravel框架的好處

如果上面這些聽起來已經很有趣,並且足以鼓勵你在你開發下一個應用程式時使用框架,那麼接下來讓我分享一下Laravel框架相對於其它PHP框架所具有的一些優勢。這些優勢無疑使Laravel框架成為最佳PHP框架的主要競爭者之一。

1.開箱即用的使用者身份驗證

Laravel框架提供了開箱即用的使用者身份驗證功能。任何現代的web應用程式都需要使用者身份驗證,使用Laravel框架,你幾乎不需要做任何事情就可以將它設定好。當你設定使用者身份驗證時,Laravel框架會建立所有重要的元件,如使用者模型、註冊和登入控制器,以及相應的檢視。而且在將來,根據應用程式所需的業務邏輯,將這些元件擴充套件到新新增的功能上也是非常容易的。

除此之外,Laravel框架還提供了Socialite package(擴充套件包),它使你的應用程式能夠使用各種社交網路(如Facebook, Google Plus和Twitter)對使用者進行身份驗證。要使它工作正常,你只需進行最低限度的配置。

2. 約定優於配置(也稱作按約定程式設計)

Laravel框架同樣採用“約定優於配置”的方法。這基本上意味著,如果遵循了不同元件的命名約定,就幾乎不必關注配置工作。如果你遵循了命名約定,Laravel框架自身就會幫你處理許多低階的細節,而且一切都會神奇地開始工作。如果你一直使用傳統的PHP程式設計,這在一開始可能會讓您感到難以忍受。但一旦你嚐到了甜頭,你就再也不想回頭了。

3.輕鬆使用的電子郵件功能

很難想象一個現代的應用程式會沒有電子郵件功能。使用Laravel框架,實現電子郵件傳送功能非常容易。除了SMTP和Php郵件功能外,Laravel框架還支援各種各樣的電子郵件通知服務,如Mailgun,Mandrill,SparkPost,Amazon SES,SendMail等等。這些服務可以使你能夠快速開始通過本地或基於雲的服務傳送郵件。你還可以使用Nexmo通過Slack和SMS傳送通知。所有這些服務在Laravel框架中都是開箱即用的。

Laravel框架還在電子郵件模板中支援Markdown(譯者注:Markdown是一個文字到HTML(text-to-HTML)的轉換工具),它能夠使你在很少的時間內完成電子郵件的建立工作。

4.Artisan命令

對我個人而言,Artisan命令列是Laravel框架提供的最簡練和最有用的功能。Artisan是Laravel框架的命令列介面,它幫助開發人員使用命令列本身自動化許多工。Artisan命令可以在應用程式本身中使用,開發人員也可以建立額外的Artisan命令。

你能夠想到的所有常見任務,都能找到一個Artisan命令與之對應。例如,建立一個模型、建立一個控制器、建立一個數據庫種子、遷移資料庫等等。這個列表是無窮無盡的。我之所以說它“簡練”,是因為你所要做的就是傳遞命令,剩下的工作全交給Laravel框架來處理。

5.“測試驅動開發”的測試自動化

Laravel框架自帶對PHPUnit的支援,使得采用“測試驅動開發”模式的PHP應用程式的測試變得非常容易。為應用程式編寫單元測試變得很簡單,而且確保事情按照你希望的方式進行。

6.簡潔的依賴注入

一旦你開始使用Laravel框架工作,你很快就會意識到Laravel框架是從Ruby on Rails和更多的函式式語言中獲得的靈感,而不是從Java。這一點從Laravel框架處理依賴注入的方式就可以輕易地看出這一點。儘管實現依賴注入可以採取複雜的模式,但Laravel框架採取的做法與之相反,它提供了建立全域性助手函式的簡單方法。藉助於全域性函式和Façade靜態代理,我們就可以在任何需要的地方輕鬆地實現依賴注入。

7.業務邏輯和顯示程式碼的分離

Laravel遵循模型-檢視-控制器(MVC)架構模式,將業務邏輯與檢視分離。這種方法有很多優點。而要真正瞭解它優點,你需要了解什麼是MVC模式,以及你的應用程式是否需要這樣的體系架構。

8. Eloquent ORM(物件關係對映)實現

Eloquent是Laravel提供的ORM(物件關係對映)實現。更多資訊可以參考維基百科中的連結(https://en.wikipedia.org/wiki/Object-relational_mapping)。Eloquent使得從資料庫中獲取資料變得非常容易。建立表之間的關係並從這些表中獲取資料也變得很簡單。Eloquent還允許你在表中建立各種連線,並提供許多幫助函式,使與資料庫的互動變得非常簡單。你幾乎不必編寫SQL查詢語句或函式。因為有了Eloquent ORM,Laravel框架就可以為下面這些資料庫提供開箱即用的支援:

  • MySQL

  • PostgreSQL

  • SQLite

  • SQL Server

你真是說對了,這基本上意味著只要你使用Eloquent,你就不必擔心與上述任何資料庫的相容性。從一個數據庫切換到另一個數據庫也非常容易。現在試著想象一下這給你的應用程式帶來的可擴充套件性,不妨讓我用一個例子來解釋這一點。假設你有一個應用程式,這個應用程式在開始時有一個很小的使用者群。由於使用者數量較小且應用程式處於初始階段,因此你決定使用MySQL作為資料庫。一段時間過後,你的應用程式的使用者數量增長到了相當高的級別,現在你可能需要切換到SQL Server資料庫。因為使用了Eloquent,這個切換現在變得非常簡單,就像更改Laravel框架中的特定配置詳細資訊一樣容易。

9.佇列(Queue)和排程器(Scheduler)

在開發應用程式時,通常會有一些耗時的任務。這些任務需要推遲到稍後的時間執行,這樣它們就不會給使用者的流程造成阻塞。這類任務的一個完美例子可能是生成一個統計使用者請求建立CSV檔案的PDF報告。Laravel框架的佇列服務提供了一個統一的API,用於將這些任務推遲到應用程式的稍後時間處理。

談到Laravel框架的命令排程器,它是那些繁瑣的定時任務(Cronjob)的完美替代品。在很多時候,開發人員必須為特定的任務設定定時作業。這種任務的一個完美例子是向所有訂閱使用者傳送他們訂閱的每週簡訊(Newsletter)。為了設定這個定時作業,開發人員必須使用SSH命令登入到伺服器並在作業系統級別設定這個定時作業。這在一段時間內會成為一個麻煩,因為這些定時作業不能成為GIT和其它版本控制系統管理的一部分。但是Laravel框架的命令排程器使用內建函式提供了一個乾淨的API來排程各種各樣的任務。這樣,你就不必使用SSH命令登入到伺服器的終端,並且所有這些被排程的作業都成為程式碼的一部分而納入版本控制系統管理的範圍。

10.簡潔的路由

Laravel框架處理路由的方式簡單直觀。有一個單一的web.php檔案來處理所有的web路由。如果某些路由需要公共中介軟體,它們可以很容易地在Laravel中分組。

路由的一個完美的應用場景是:應用程式中的某些頁面,在使用者可以檢視它們之前,這些頁面需要使用者身份驗證。Laravel框架可以將所有這些頁面分組,並且經過Auth中介軟體檢查,以確保只有登入到系統的使用者才能檢視這些頁面。Laravel框架還提供了一個簡潔的路由模型繫結(route model binding),其中模型(model)可以繫結到路由。有了這個幫助,檢視可以直接從路由本身返回,甚至不需要訪問控制器。

11. Composer管理依賴關係

Laravel框架使用Composer管理依賴關係和自動載入。Composer可以幫助你安裝Laravel擴充套件包,這使得依賴管理變得輕而易舉。在任何時候,你都可以檢查package.json檔案來檢視你的應用程式正在使用的所有依賴項。Composer還讓你能夠使用單個Composer命令更新依賴項。

12.Blade模板引擎

Blade是Laravel框架的模板引擎。Blade可以讓你在分離檢視和業務邏輯上領先一步。它能讓你的檢視程式碼保持非常乾淨。一旦你對MVC架構模式和Laravel對它的實現有了清楚的瞭解,你就會更加清楚地認識到Blade模板引擎的重要性。Blade還提供了模板繼承,因此你可以將最近使用的模板劃分為多個部分,並讓其它檢視檔案繼承這些部分。有了Blade的幫助,你就可以建立一些邏輯較小的檢視部分,然後可以包含這些小的部分以形成完整的檢視。

13.文件

這是一個有點灰色的區域。當我最初開始使用Laravel框架的時候,我在查詢文件時確實遇到了問題。當時所有的一切都沒有文件,但是在某個時刻我突然發現有些事情開始神奇地工作,那就是大家始遵循命名規範的那個時刻。現在,有一些API文件列出了Laravel框架中宣告的每個類和方法。一旦你掌握瞭如何使用它,並且知道如何使用Laravel文件來為你的利益服務,我保證你不會再有任何抱怨。

14.活躍社群

Laravel確實有一個活躍的社群。當你遇到任何問題時,你都可以搜尋,而且肯定會查到許多針對你的問題的StackOverflow帖子。除了在StackOverflow上有一個活躍的社群外,還有一個叫做Laracast的討論論壇。你可以免費註冊成為Laracast論壇和社群的一部分,那個社群現在非常活躍。

我認為這些優勢足以讓你對Laravel框架感到興奮。儘管把它定義為完美肯定是誇大其詞了,但我可以肯定的是,Laravel框架絕對是最好的PHP框架之一。

如果你年滿18週歲以上,又覺得學【PHP】太難?想嘗試其他程式語言,那麼我推薦你學Python,現有價值499元Python零基礎課程限時免費領取,限10個名額!

掃描二維碼-免費領取

點選“檢視原文”獲取更多