Laravel學習筆記-Laravel 成為最佳 PHP 框架的 14 個理由戳表!

在開發(fā)應用程序時選擇使用哪個框架桶至,這將取決于很多因素。和其它任何應用程序框架一樣匾旭,Laravel框架也有其優(yōu)缺點镣屹。撇開那些令人憎惡的缺點不談,這篇文章我們將把重點放在使用Laravel框架的優(yōu)點上价涝。

我們開始討論Laravel的神奇之處女蜈,而不使用已有的框架,自己開發(fā)構建一個應用程序所需一切的潛在風險是什么色瘩?不使用框架來構建應用程序有什么問題伪窖?為了理解在不使用框架的情況下開發(fā)一個應用程序的潛在風險,讓我們假設居兆,我們必須構建一個使用MVC(模型-視圖-控制器)架構模式的應用程序覆山。

當你開始設置架構時,我們需要根據應用程序的結構泥栖,從很多種架構模式中做出合適的選擇簇宽。當我想到如果我自己需要開發(fā)一套完整的應用程序體系架構時勋篓,我馬上想到了幾個問題。

首先魏割,我應該從應用程序的哪個組件開始著手處理呢生巡?是先安裝所有的第三方依賴項和庫嗎?從應用程序的可擴展性來考慮见妒,我應該使用什么樣的模型類(model class)庫來和數據庫進行交互?是使用PDO類呢孤荣,還是有更好的選擇?

我將如何管理依賴注入须揣?考慮到后期會有更多的開發(fā)人員在同一個應用程序上工作盐股,我應該如何對這個體系結構做一個完整的記錄?

這些問題看起來很難回答耻卡,但是我想告訴你這些僅僅是個開始疯汁。

很明顯,如果你不是一個熟悉MVC體系架構的編程者卵酪,那么這些問題本身對你來說都是新問題幌蚊。如果你以前沒有使用過任何框架,你可能從來沒有問過這些問題溃卡。如果是這樣的話溢豆,那么這個理由本身就足以讓你采用Laravel框架進行應用程序開發(fā)。

Laravel框架將為你處理所有這些低級的細節(jié)瘸羡,并為你提供一個簡潔和實用的架構模式漩仙。同時,Laravel框架將為你處理模型犹赖、視圖和控制器之間的無縫交互队他。
并且還將為你提供許多內置在框架中的不同功能,以便你可以專注于編寫應用程序的業(yè)務邏輯峻村。

最終麸折,你因為不必花費時間尋找這些低級問題的解決方法,而節(jié)省大量的時間和精力粘昨。

框架提供了一致性和靈活性讓我們試著想象一下這樣一種情形:你正在開發(fā)一個龐大的應用程序垢啼,但是沒有使用任何現(xiàn)成的框架或者使用自己構建的框架。當用戶數量增加或需要添加更多功能時雾棺,你將需要更多的開發(fā)人員來開發(fā)和維護這個應用程序膊夹。

在新開發(fā)人員入職期間,你除了向他們介紹你的開發(fā)團隊需要遵循的軟件開發(fā)的所有流程步驟和方法之外捌浩,你還必須向他們講解你所構建的整個應用程序結構放刨。由于這個原因,新的開發(fā)人員必須通過一個高的學習曲線來理解你開發(fā)的新體系結構尸饺。

但是如果你使用Laravel框架进统,這類問題將不復存在助币,因為這個框架會帶給你應用程序開發(fā)的一致性。Laravel框架有詳細的文檔螟碎,新開發(fā)人員不必經歷使用新框架的學習過程眉菱。

因為你可以很容易地聘請到一個熟悉Laravel框架的開發(fā)人員,并能讓他很快開始工作掉分。當一個團隊使用標準化框架(比如Laravel)來構建應用程序時俭缓,向團隊中添加其他開發(fā)人員就會變得很容易。

這是因為:當你雇傭了一個熟悉Laravel框架的開發(fā)人員酥郭,他能夠理解這些代碼华坦,因為所有代碼都遵循相同的模式。

使用Laravel框架的好處如果上面這些聽起來已經很有趣不从,并且足以鼓勵你在你開發(fā)下一個應用程序時使用框架惜姐,那么接下來讓我分享一下Laravel框架相對于其它PHP框架所具有的一些優(yōu)勢。

這些優(yōu)勢無疑使Laravel框架成為最佳PHP框架的主要競爭者之一椿息。

1.開箱即用的用戶身份驗證Laravel框架提供了開箱即用的用戶身份驗證功能歹袁。

任何現(xiàn)代的web應用程序都需要用戶身份驗證,使用Laravel框架寝优,你幾乎不需要做任何事情就可以將它設置好条舔。

當你設置用戶身份驗證時,Laravel框架會創(chuàng)建所有重要的組件倡勇,如用戶模型逞刷、注冊和登錄控制器,以及相應的視圖妻熊。

而且在將來,根據應用程序所需的業(yè)務邏輯仑最,將這些組件擴展到新添加的功能上也是非常容易的扔役。

除此之外,Laravel框架還提供了Socialite package(擴展包)警医,它使你的應用程序能夠使用各種社交網絡(如Facebook, Google Plus和Twitter)對用戶進行身份驗證亿胸。

要使它工作正常,你只需進行最低限度的配置预皇。

2. 約定優(yōu)于配置(也稱作按約定編程)Laravel框架同樣采用“約定優(yōu)于配置”的方法侈玄。

這基本上意味著,如果遵循了不同組件的命名約定吟温,就幾乎不必關注配置工作序仙。

如果你遵循了命名約定,Laravel框架自身就會幫你處理許多低級的細節(jié)鲁豪,而且一切都會神奇地開始工作潘悼。

如果你一直使用傳統(tǒng)的PHP編程律秃,這在一開始可能會讓您感到難以忍受。

但一旦你嘗到了甜頭治唤,你就再也不想回頭了棒动。

3.輕松使用的電子郵件功能很難想象一個現(xiàn)代的應用程序會沒有電子郵件功能。

使用Laravel框架,實現(xiàn)電子郵件發(fā)送功能非常容易宾添。

除了SMTP和Php郵件功能外船惨,Laravel框架還支持各種各樣的電子郵件通知服務,如Mailgun缕陕,Mandrill粱锐,SparkPost,Amazon SES榄檬,SendMail等等卜范。

這些服務可以使你能夠快速開始通過本地或基于云的服務發(fā)送郵件。

你還可以使用Nexmo通過Slack和SMS發(fā)送通知鹿榜。

所有這些服務在Laravel框架中都是開箱即用的海雪。

Laravel框架還在電子郵件模板中支持Markdown

(譯者注:Markdown是一個文本到HTML(text-to-HTML)的轉換工具),

它能夠使你在很少的時間內完成電子郵件的創(chuàng)建工作舱殿。

4.Artisan命令

對我個人而言奥裸,Artisan命令行是Laravel框架提供的最簡練和最有用的功能。

Artisan是Laravel框架的命令行接口沪袭,它幫助開發(fā)人員使用命令行本身自動化許多任務湾宙。

Artisan命令可以在應用程序本身中使用,開發(fā)人員也可以創(chuàng)建額外的Artisan命令冈绊。

你能夠想到的所有常見任務侠鳄,都能找到一個Artisan命令與之對應。

例如死宣,創(chuàng)建一個模型伟恶、創(chuàng)建一個控制器、創(chuàng)建一個數據庫種子毅该、遷移數據庫等等博秫。

這個列表是無窮無盡的。

我之所以說它“簡練”眶掌,是因為你所要做的就是傳遞命令挡育,剩下的工作全交給Laravel框架來處理。

5.“測試驅動開發(fā)”

“測試驅動開發(fā)”的測試自動化Laravel框架自帶對PHPUnit的支持朴爬,使得采用“測試驅動開發(fā)”模式的PHP應用程序的測試變得非常容易即寒。

為應用程序編寫單元測試變得很簡單,而且確保事情按照你希望的方式進行。

6.簡潔的依賴注入

一旦你開始使用Laravel框架工作蒿叠,你很快就會意識到Laravel框架是從Ruby on Rails和更多的函數式語言中獲得的靈感明垢,而不是從Java。

這一點從Laravel框架處理依賴注入的方式就可以輕易地看出這一點市咽。

盡管實現(xiàn)依賴注入可以采取復雜的模式痊银,但Laravel框架采取的做法與之相反,它提供了創(chuàng)建全局助手函數的簡單方法施绎。

借助于全局函數和Faade靜態(tài)代理溯革,我們就可以在任何需要的地方輕松地實現(xiàn)依賴注入。

7.業(yè)務邏輯和顯示代碼的分離

Laravel遵循模型-視圖-控制器(MVC)架構模式谷醉,將業(yè)務邏輯與視圖分離致稀。

這種方法有很多優(yōu)點。

而要真正了解它優(yōu)點俱尼,你需要了解什么是MVC模式抖单,以及你的應用程序是否需要這樣的體系架構。

8. Eloquent ORM

Eloquent ORM(對象關系映射)實現(xiàn)Eloquent是Laravel提供的ORM(對象關系映射)實現(xiàn)遇八。

Eloquent使得從數據庫中獲取數據變得非常容易矛绘。

創(chuàng)建表之間的關系并從這些表中獲取數據也變得很簡單。

Eloquent還允許你在表中創(chuàng)建各種連接刃永,并提供許多幫助函數货矮,使與數據庫的交互變得非常簡單。

你幾乎不必編寫SQL查詢語句或函數斯够。

因為有了Eloquent ORM囚玫,Laravel框架就可以為下面這些數據庫提供開箱即用的支持:MySQLPostgreSQLSQLiteSQL Server你真是說對了,這基本上意味著只要你使用Eloquent读规,你就不必擔心與上述任何數據庫的兼容性抓督。

從一個數據庫切換到另一個數據庫也非常容易。

現(xiàn)在試著想象一下這給你的應用程序帶來的可擴展性束亏,不妨讓我用一個例子來解釋這一點本昏。

假設你有一個應用程序,這個應用程序在開始時有一個很小的用戶群枪汪。由于用戶數量較小且應用程序處于初始階段,因此你決定使用MySQL作為數據庫怔昨。一段時間過后雀久,你的應用程序的用戶數量增長到了相當高的級別,現(xiàn)在你可能需要切換到SQL Server數據庫趁舀。因為使用了Eloquent赖捌,這個切換現(xiàn)在變得非常簡單,就像更改Laravel框架中的特定配置詳細信息一樣容易。

9.隊列(Queue)和調度器(Scheduler)

在開發(fā)應用程序時越庇,通常會有一些耗時的任務罩锐。

這些任務需要推遲到稍后的時間執(zhí)行,這樣它們就不會給用戶的流程造成阻塞卤唉。

這類任務的一個完美例子可能是生成一個統(tǒng)計用戶請求創(chuàng)建CSV文件的PDF報告涩惑。Laravel框架的隊列服務提供了一個統(tǒng)一的API,用于將這些任務推遲到應用程序的稍后時間處理桑驱。

談到Laravel框架的命令調度器竭恬,它是那些繁瑣的定時任務(Cronjob)的完美替代品。

在很多時候熬的,開發(fā)人員必須為特定的任務設置定時作業(yè)痊硕。

這種任務的一個完美例子是向所有訂閱用戶發(fā)送他們訂閱的每周簡訊(Newsletter)。

為了設置這個定時作業(yè)押框,開發(fā)人員必須使用SSH命令登錄到服務器并在操作系統(tǒng)級別設置這個定時作業(yè)岔绸。

這在一段時間內會成為一個麻煩,因為這些定時作業(yè)不能成為GIT和其它版本控制系統(tǒng)管理的一部分橡伞。

但是Laravel框架的命令調度器使用內置函數提供了一個干凈的API來調度各種各樣的任務盒揉。

這樣,你就不必使用SSH命令登錄到服務器的終端骑歹,并且所有這些被調度的作業(yè)都成為代碼的一部分而納入版本控制系統(tǒng)管理的范圍预烙。

10.簡潔的路由Laravel框架處理路由的方式簡單直觀。

有一個單一的web.php文件來處理所有的web路由道媚。

如果某些路由需要公共中間件扁掸,它們可以很容易地在Laravel中分組。

路由的一個完美的應用場景是:應用程序中的某些頁面最域,在用戶可以查看它們之前谴分,這些頁面需要用戶身份驗證。

Laravel框架可以將所有這些頁面分組镀脂,并且經過Auth中間件檢查牺蹄,以確保只有登錄到系統(tǒng)的用戶才能查看這些頁面。

Laravel框架還提供了一個簡潔的路由模型綁定(route model binding)薄翅,其中模型(model)可以綁定到路由沙兰。

有了這個幫助,視圖可以直接從路由本身返回翘魄,甚至不需要訪問控制器鼎天。

11. Composer管理依賴關系Laravel框架使用Composer管理依賴關系和自動加載。

Composer可以幫助你安裝Laravel擴展包暑竟,這使得依賴管理變得輕而易舉斋射。

在任何時候,你都可以檢查package.json文件來查看你的應用程序正在使用的所有依賴項。

Composer還讓你能夠使用單個Composer命令更新依賴項罗岖。

12.Blade模板引擎Blade是Laravel框架的模板引擎涧至。

Blade可以讓你在分離視圖和業(yè)務邏輯上領先一步。

它能讓你的視圖代碼保持非常干凈桑包。

一旦你對MVC架構模式和Laravel對它的實現(xiàn)有了清楚的了解南蓬,你就會更加清楚地認識到Blade模板引擎的重要性。

Blade還提供了模板繼承捡多,因此你可以將最近使用的模板劃分為多個部分蓖康,并讓其它視圖文件繼承這些部分。

有了Blade的幫助垒手,你就可以創(chuàng)建一些邏輯較小的視圖部分蒜焊,然后可以包含這些小的部分以形成完整的視圖。

13.文檔這是一個有點灰色的區(qū)域科贬。

當我最初開始使用Laravel框架的時候泳梆,我在查找文檔時確實遇到了問題。

當時所有的一切都沒有文檔榜掌,但是在某個時刻我突然發(fā)現(xiàn)有些事情開始神奇地工作优妙,那就是大家始遵循命名規(guī)范的那個時刻。

現(xiàn)在憎账,有一些API文檔列出了Laravel框架中聲明的每個類和方法套硼。

一旦你掌握了如何使用它,并且知道如何使用Laravel文檔來為你的利益服務胞皱,我保證你不會再有任何抱怨邪意。

14.活躍社區(qū)Laravel確實有一個活躍的社區(qū)。

當你遇到任何問題時反砌,你都可以搜索雾鬼,而且肯定會查到許多針對你的問題的帖子。

社區(qū)交流非常強大宴树,公眾號每天更新技術文章和最新咨詢策菜。

我認為這些優(yōu)勢足以讓你對Laravel框架感到興奮。

盡管把它定義為完美肯定是夸大其詞了酒贬,但我可以肯定的是又憨,Laravel框架絕對是最好的PHP框架之一。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末锭吨,一起剝皮案震驚了整個濱河市竟块,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌耐齐,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異埠况,居然都是意外死亡耸携,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門辕翰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來夺衍,“玉大人,你說我怎么就攤上這事喜命」瞪常” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵壁榕,是天一觀的道長矛紫。 經常有香客問我,道長牌里,這世上最難降的妖魔是什么颊咬? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮牡辽,結果婚禮上喳篇,老公的妹妹穿的比我還像新娘。我一直安慰自己态辛,他們只是感情好麸澜,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著奏黑,像睡著了一般炊邦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上攀涵,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天铣耘,我揣著相機與錄音,去河邊找鬼以故。 笑死蜗细,一個胖子當著我的面吹牛,可吹牛的內容都是我干的怒详。 我是一名探鬼主播炉媒,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼昆烁!你這毒婦竟也來了吊骤?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤静尼,失蹤者是張志新(化名)和其女友劉穎白粉,沒想到半個月后传泊,有當地人在樹林里發(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡鸭巴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年眷细,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鹃祖。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡溪椎,死狀恐怖,靈堂內的尸體忽然破棺而出恬口,到底是詐尸還是另有隱情校读,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布祖能,位于F島的核電站歉秫,受9級特大地震影響,放射性物質發(fā)生泄漏芯杀。R本人自食惡果不足惜端考,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望揭厚。 院中可真熱鬧却特,春花似錦、人聲如沸筛圆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽太援。三九已至闽晦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間提岔,已是汗流浹背仙蛉。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留碱蒙,地道東北人荠瘪。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像赛惩,于是被迫代替她去往敵國和親哀墓。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內容