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個名額!

掃描二維碼-免費領取

點擊“查看原文”獲取更多