Laravel

开源PHP Web应用框架

Laravel 是一個由Taylor Otwell所建立,免费的開源[2] PHP Web 框架,旨在實作的Web軟體的MVC架構,並作為CodeIgniter的替代方案。其原始碼託管於GitHub,許可條款為MIT許可證[3]Laravel的特色包含:支援用户身份驗證授權,具有模組化的套件系統且有專屬的套件庫,提供連接許多種類的關連式資料庫的方式,提供工具來協助應用程式的部署和维持,並且發展出許多語法糖[4][5][6][7]

Laravel
Laravel logo
開發者Taylor Otwell
初始版本2011年6月,​10年前​(2011-06[1]
穩定版本
8.34.0(2021年3月23日,​8個月前​(2021-03-23
源代码库github.com/laravel/framework
编程语言PHP
类型Web應用框架
许可协议MIT授權條款
网站laravel.com

Laravel與SymfonyZendCodeIgniter、Yii2 和其他框架一起被視為最受歡迎的 PHP 框架之一。[8][9]

歷史编辑

Laravel 1
Laravel在2011年6月9日發佈了第一個 Beta測試版本,並在一個月後發布正式版本 Laravel 1。Laravel 1 預設提供了身份驗證、多語系、 Model(MVC)、view、session、路由和其他機制,但缺少控制器,以至於無法成為一个真正的MVC框架。[1]
Laravel 2
2011年9月正式發佈,並由作者與社群提供了許多優化。主要的新功能包括支持 controller,使 Laravel 2 成為真正的 MVC 框架,並且實現了 控制反轉(IoC) ,和提供樣版引擎 blade。 但同時也帶來一個缺點:移除了第三方套件的支援。[1]
Laravel 3
於2012年發佈。帶來的新功能包括:命令列介面(CLI) Artisan,支持多種 資料庫管理系统、提供 migration 為資料庫做 版本控制 ,支援事件(event)的處理,以及封裝系统 Bundles。 隨著Laravel 3 的發佈,Laravel 的使用者和受歡迎程度也隨之增加。[1]
Laravel 4
代號為 Illuminate,於2013年發佈。此版本將過去的程式碼全部重寫,並將各自分散許多的套件中,並透過 Composer 管理(一個應用程式等級的 套件管理工具 )。 這樣的修改提高了Laravel 4的可擴充性,搭配其官方的六个月的小數點版本的發布計畫。其他 Laravel 4的特點包括:資料庫的 seeding (為資料庫建置初始的資料),支持 佇列(queue),支持發送不同類型的電子郵件,並支持資料庫的 軟刪除[10]
Laravel 5
2015年2月發佈[11]。 新的特點包括:提供周期性地執行任務的排程器 Scheduler,提供一個抽象層 Flysystem ,讓遠端與本地端的 檔案系統 能有相同的操作方式,提供 Elixir 以管理靜態資源,並提供了可簡化串接 OAuth 登入的套件 Socialite 。 Laravel 5 也同時修改了 目錄結構[12]
Laravel 5.1
2015年6月發佈,是 Laravel 的第一個 長期支援版本(LTS) ,並計畫提供兩年的 錯誤修正 和三年的 安全性更新 。 同時也預計未來每兩年會發佈一次新的 LTS 版本。[13]
Laravel 5.3
於2016年8月23日發佈。此版本著重在協助使用者加速開發,並提供了優化開發流程的工具。[14][15]
Laravel 5.4
2017年1月24日發佈。此版本提供了許多新功能,像 Laravel Dusk,Laravel Mix,Components & Slots(Blade),Markdown Emails,自動 Facades、路由的優化,collection 的高階函數,還有很多其他功能。[16]
Laravel 6.0
2019年9月3日發佈。引入語義化版本控制,兼容 Laravel Vapor,優化授權響應、Job Middleware、Lazy Collections 和 Sub-query 等功能。移除預設的前端腳手架,並轉移至 Laravel UI 套件。[17]
Laravel 7.0
2020年3月3日發佈。加入Laravel Sanctum為SPA(單頁應用)、手機應用等提供API token的生成和管理功能,及Stub Customization、Custom Eloquent Casts、Blade Component Tags、基於Guzzle改進的HTTP Client、Fluent String Operations、CORS Support、Query Time Casts、Multiple Mail Drivers等功能,這個版本也改善了路由綁定和緩存的性能,並為Artisan 加入了test指令。[18]
Laravel 8.0
2020年9月8日發佈。Laravel 8通過引入Laravel Jetstream、模型工廠類、遷移壓縮、隊列批處理、改善速率限制、隊列改進、動態Blade組件、Tailwind分頁視圖、時間測試助手、artisan serve的改進、事件監聽器的改進,以及各種其他錯誤修復和可用性改進,對Laravel 7.x繼續進行了改善。[19]

版本發佈紀錄编辑

Laravel 發行版本分為兩類:一般版本LTS長期支援版本[20]

一般版本
提供 6 個月的錯誤修正和 1 年的安全性更新。
LTS長期支援版本
如 Laravel 5.1,提供了 2 年錯誤修正和 3 年的安全性更新,提供了長期的支援和維護。
版本 發佈日期 錯誤修正至 安全性更新至 PHP 版本
舊版本,不再支援: 1.0 2011年6月
舊版本,不再支援: 2.0 2011年9月
舊版本,不再支援: 3.0 2012年2月22日
舊版本,不再支援: 3.1 2012年3月27日
舊版本,不再支援: 3.2 2012年5月22日
舊版本,不再支援: 4.0 2013年5月28日 ≥ 5.3.0
舊版本,不再支援: 4.1 2013年12月11日 ≥ 5.3.0
舊版本,不再支援: 4.2 2014年6月1日 ≥ 5.4.0
舊版本,不再支援: 5.0 2015年2月4日 2015年8月4日 2016年2月4日 ≥ 5.4.0
舊版本,不再支援: 5.1 LTS 2015年6月9日 2017年6月9日 2018年6月9日 ≥ 5.5.9
舊版本,不再支援: 5.2 2015年12月21日 2016年6月21日 2016年12月21日 ≥ 5.5.9
舊版本,不再支援: 5.3 2016年8月23日 2017年2月23日 2017年8月23日 ≥ 5.6.4
舊版本,不再支援: 5.4 2017年1月24日 2017年7月24日 2018年1月24日 ≥ 5.6.4
舊版本,不再支援: 5.5 LTS 2017年8月30日 2019年8月30日 2020年8月30日 ≥ 7.0.0
舊版本,不再支援: 5.6 2018年2月7日 2018年8月7日 2019年2月7日 ≥ 7.1.3
舊版本,不再支援: 5.7 2018年9月4日 2019年3月4日 2019年9月4日 ≥ 7.1.3
舊版本,不再支援: 5.8 2019年2月26日 2019年8月26日 2020年2月26日 ≥ 7.1.3
舊版本,仍被支援: 6.x LTS 2019年9月3日 2021年9月3日 2022年9月3日 ≥ 7.2.0
舊版本,仍被支援: 7.x 2020年3月3日 2020年9月3日 2021年3月3日 ≥ 7.2.5
當前版本: 8.x 2020年9月8日 2021年2月8日 2021年9月8日 ≥ 7.3.0
图例: 舊版本 舊版本,仍被支援 当前版本 最新预览版本 未来版本

來源: Laravel[21]

功能编辑

以下幾點為 Laravel 的核心設計理念[22]

  • Eloquent ORM (物件關係對映):將 Active Record 模式 以 PHP 實作,提供一些函式來建立 資料庫 物件之間的關聯。 依照 Active Record 模式的原則,Eloquent ORM 以 類別 代表 資料表,並將這些類別的物件實例與資料表中的單一筆資料做綁定。[23][24]
  • Query builder:於 Laravel 3 釋出,提供一個能更直接的存取 Eloquent ORM 的管道。 與其撰寫 SQL 查詢語法,Laravel 的 query builder 提供了一系列的類別與 函式,得以使用程式化呼叫的方式來執行 SQL 查詢。 同時也可以對查詢語法的執行結果做(可再被查詢的)快取。[25]
  • Application logic:在專案中將其他已開發的功能整合,顯著的案例為 Controller 的使用與路由的宣告。 其語法與 Sinatra 框架相似。
  • Reverse routing:為專案內的超連結建立成一個一個的路由,當套用了路由的超連結被修改,便會自動更新所有使用了該路由的超連結。 使用時需要填入要使用的路由的名稱,Laravel 會將他們轉換成對應的 URIs
  • Restful controllers:提供一種將 HTTP GET 和 POST requests 背後的邏輯切割的方式。
  • Class auto loading:自動載入 PHP 的類別,不須手動維護所有類別的引用路徑。類別只會在被使用到的當下才載入,避免載入不須要的類別。
  • View composers:是可自定義的一些程式碼區塊,當 view 被載入時便會被執行。
  • Database seeding:提供一種管道來把預設的資料用來填充到資料庫,便於進行软件测试,或被作為應用程式最初的建置步驟。
  • Filesystem:於 Laravel 5.0 新增,統一了 檔案系統 的函式,讓本地端和 雲端 儲存空間(如 亞馬遜 S3Rackspace Cloud)的操作邏輯一致。[26]
  • 单元测试 也被整合到了 Laravel,其包括的測試案例能夠偵測並預防框架內的迴歸,並可以使用 Artisan CLI 來執行單元測試.
  • Homestead: 一個Vagrant虛擬機,預載了 Laravel 開發者需要的所有開發工具,包括 Ubuntu,Gulp,Bower 以及其他輔助網頁開發的工具。[27]
  • Lazy Collection:於 Laravel 6 新增,使用 PHP 的 generators 來處理大量資料,同時保持較低的內存使用率。[28]

官方提供的套件编辑

可透過 Composer 以及 Packagist 安裝下列套件:

  • Cashier:於 Laravel 4.2 推出,可串接訂閱制付款服務如 Stripe,並提供 优惠券收據 等功能。[29]
  • Envoy:於 Laravel 4.2 推出,提供了簡潔、輕量的語法,定義遠程服務器上運行的常見任務,使用 Blade 風格的語法,可以簡單的設置部署任務、執行 Artisan 指令等。[30]
  • Socialite:於 Laravel 5.0 推出,簡化串接 OAuth 的流程,提供平台如 FacebookTwitterGoogleGitHubBitbucket[31]
  • Passport:於 Laravel 5.3 推出,完整的 OAuth2 服務器實現。[32]
  • Scout:於 Laravel 5.3 推出,Eloquent 全文搜尋套件,預設使用 Algolia 驅動。[33]
  • Dusk:於 Laravel 5.4 推出,易於使用的瀏覽器自動化測試套件。[34]
  • Horizon:於 Laravel 5.5 推出,以 Redis 為基礎的 Laravel 隊列儀表板和設定系統。[35]
  • Telescope:於 Laravel 5.7 推出,提供簡潔的儀表板,監控應用程式的請求(Request)、異常(Exception)、日誌(Log)、資料庫查詢(Database queries)、排隊的作業(Queued jobs)、郵件(Mail)、通知(Notifications)、緩存操作、計劃任務(Notifications)、變量監控(variable dumps)等。[36]
  • Sanctum:於 Laravel 7.0 推出,為單頁應用移動應用程序和基於令牌的簡單API,提供了輕巧的身份驗證系統。[37]

Artisan CLI编辑

Laravel 的 命令列介面 (CLI),稱為 Artisan,於 Laravel 3 推出時功能還相當有限。 隨後 Laravel 將架構改為以 Composer 作為基底,讓 Artisan 得以和 Symfony 框架的元件互補,也因此 Laravel 4 的 Artisan 提供了更多的功能。[38]

Artisan 的功能被分散到不同的子命令,用以協助打造與管理這些由 Laravel 建構而成的軟體。最常見的使用情境如:操作資料庫的 migration & seeding、汲取套件的靜態資源、為新建立的 controller 或 migration 產生程式碼樣板(為開發者省去重複撰寫相同程式碼的時間)。開發者也可以自行新增新的命令,來擴充 Artisan 的功能(如自動化的執行任務)。[10]

研討會编辑

Laracon编辑

Laracon為Laravel官方舉辦的研討會,曾在美國歐洲和網路上舉辦,主題囊括Laravel的開發、使用、和與其有關的軟體開發議題[39][40]。每年的會議具有各種不同的贊助者和組織成員,但 Laravel官方、Laravel News和UserScape通常是主要的組織成員。

一般來說,每一年都會在美國歐洲舉辦一次研討會。而2017年Laracon也首度於網路上舉辦,未來也將會有更多活動以類似形式出現在網路上[41]

目前已經舉辦了以下場次:

 
Taylor Otwell,2013 年在美國的 Laracon
日期 位置
2013年2月22~23日 华盛顿特区
2013年8月30~31日 阿姆斯特丹
2014年5月15~16日 纽约市
2014年8月28~30日 阿姆斯特丹
2015年8月11~12日 肯塔基州路易斯维尔
2015年8月25~26日 阿姆斯特丹
2016年7月27~29日 肯塔基州路易斯维尔
2016年8月23~24日 阿姆斯特丹
2017年8月 線上舉辦
2017年7月25~26日 纽约市
2017年8月28~30日 阿姆斯特丹

LaravelConf Taiwan编辑

LaravelConf Taiwan為Laravel道場[42]主辦人兼台灣的社群推廣者范聖佑發起的研討會。自2017年開始,於張榮發基金會國際會議中心舉辦。研討會議程包括技術主題、實做主題以及套件發表會等內容。[43][44]

目前已經舉辦了以下場次:

  • LaravelConf Taiwan 2017[45] - 2017年7月1日
  • LaravelConf Taiwan 2018[46] - 2018年7月8日
  • LaravelConf Taiwan 2019[47] - 2019年7月13日

合作夥伴编辑

在2017年4月7日,Taylor Otwell 公告出了 Laravel 網站的「合作夥伴」章節。其目的是為了提供 Laravel 社群一個公司的列表,列表內所列出的公司,都是能夠提供 Laravel 最佳發展和指導的可信公司。 2017年9月,Laravel 的合作夥伴包括:

  • Vehikl
  • Tighten Co.
  • Kirschbaum Development Group

参見编辑

註記编辑

参考文献编辑

  1. ^ 1.0 1.1 1.2 1.3 Maks Surguy. History of Laravel PHP framework, Eloquence emerging. maxoffsky.com. July 27, 2013 [May 10, 2015]. (原始内容存档于2020-11-27). 
  2. ^ The real-time community site Voten goes open-source. [2018-02-02]. (原始内容存档于2020-11-12). 
  3. ^ laravel/laravel: laravel/readme.md at master. 2015-04-22 [2015-05-10]. (原始内容存档于2019-09-21). 
  4. ^ Daniel Gafitescu. Goodbye CodeIgniter, Hello Laravel. 2013-06-06 [2013-12-21]. (原始内容存档于2020-11-30). 
  5. ^ Laravel 5 Essentials. books.google.com (Packt). April 2015 [2015-09-02]. ISBN 978-1785283017. (原始内容存档于2020-08-04). 
  6. ^ Laravel Documentation (versions 3.0 3.2.14). three.laravel.com. [2014-08-30]. (原始内容存档于2014-08-26). 
  7. ^ Laravel Documentation (version 4.2). laravel.com. [2014-08-30]. (原始内容存档于2014-09-20). 
  8. ^ Bruno Skvorc. Best PHP Framework for 2015 – SitePoint Survey Results. 2015-03-28 [2015-06-14]. (原始内容存档于2015-04-02). 
  9. ^ 辜騰玉. 開發者最愛PHP框架排行榜出爐!Laravel蟬聯第一,Phalcon被打入冷宮剩不到3%支持. iThome. 2015-04-01 [2018-08-17]. (原始内容存档于2019-08-07) (中文(臺灣)). 
  10. ^ 10.0 10.1 Raphaël Saunier. Getting Started with Laravel 4. worldcat.org (Packt). January 2014 [2015-09-02]. ISBN 978-1783287031. (原始内容存档于2019-08-07). 
  11. ^ 原先為 Laravel 4.3,因為一些內部因素而修改版本號)
  12. ^ Eric Barnes. Laravel 5. 2015-01-30 [2015-05-10]. (原始内容存档于2016-11-11). 
  13. ^ Eric L. Barnes. Laravel 5.1 is released. laravel-news.com. 2015-06-09 [2015-06-14]. (原始内容存档于2016-05-12). 
  14. ^ Eric L. Barnes. Laravel 5.3 is now released. laravel-news.com. 2016-08-23 [2016-08-23]. (原始内容存档于2016-08-28). 
  15. ^ David oscar. What’s new in laravel 5.3. digitalsoft.in. 2016-08-23 [2016-08-23]. [永久失效連結]
  16. ^ Laravel 5.4 Is Now Released. Laravel News. 2017-01-24 [2017-02-21]. (原始内容存档于2020-11-25) (美国英语). 
  17. ^ Laravel 6 release notes. Laravel. Laravel. [February 28, 2020]. (原始内容存档于2021-01-30). 
  18. ^ Laravel 7 release notes. Laravel. Laravel. [June 16, 2020]. (原始内容存档于2020-03-10). 
  19. ^ Laravel. Laravel 8 Release Notes. Laravel. [2021-02-25]. 
  20. ^ Laravel Documentation: Releases. Laravel. [February 26, 2017]. (原始内容存档于2020-11-23). 
  21. ^ Release Notes - Laravel. Laravel. [February 28, 2020]. 
  22. ^ 其餘未具體指出的,可以參考 Laravel 3 技術文件的功能敘述:Jeffrey Way. Why Laravel is Taking the PHP Community by Storm. 2012-11-28 [2015-05-09]. (原始内容存档于2015-05-05). 
  23. ^ Eloquent ORM in Laravel: What and Why!. [2014-12-19]. (原始内容存档于2014-12-19). 
  24. ^ Develop Faster with the Laravel PHP Framework. [2015-04-17]. (原始内容存档于2020-12-03). 
  25. ^ Laravel documentation (version 4.0): Query builder. [2015-04-27]. (原始内容存档于2015-03-24). 
  26. ^ File Storage - Laravel - The PHP Framework For Web Artisans. laravel.com. [February 28, 2020]. (原始内容存档于2020-11-29). 
  27. ^
  28. ^ Collections - Laravel - The PHP Framework For Web Artisans. [28 February 2020]. (原始内容存档于2020-11-12). 
  29. ^ Laravel Cashier - Laravel - The PHP Framework For Web Artisans. laravel.com. [February 28, 2020]. (原始内容存档于2020-10-30). 
  30. ^ Laravel Envoy - Laravel - The PHP Framework For Web Artisans. laravel.com. [February 28, 2020]. (原始内容存档于2021-01-10). 
  31. ^ Laravel Socialite - Laravel - The PHP Framework For Web Artisans. laravel.com. [February 28, 2020]. (原始内容存档于2020-11-23). 
  32. ^ Laravel Passport - Laravel - The PHP Framework For Web Artisans. laravel.com. [February 28, 2020]. (原始内容存档于2020-11-12). 
  33. ^ Laravel Scout - Laravel - The PHP Framework For Web Artisans. laravel.com. [February 28, 2020]. (原始内容存档于2020-11-29). 
  34. ^ Laravel Dusk - Laravel - The PHP Framework For Web Artisans. laravel.com. [February 28, 2020]. (原始内容存档于2020-11-29). 
  35. ^ Laravel Horizon - Laravel - The PHP Framework For Web Artisans. laravel.com. [February 28, 2020]. (原始内容存档于2020-11-23). 
  36. ^ Laravel Telescope - Laravel - The PHP Framework For Web Artisans. laravel.com. [February 28, 2020]. (原始内容存档于2020-11-29). 
  37. ^ Laravel Sanctum - Laravel - The PHP Framework For Web Artisans. laravel.com. [February 28, 2020]. (原始内容存档于2020-11-23). 
  38. ^ Jason Lewis. Your One-Stop Guide to Laravel Commands. code.tutsplus.com. 2013-02-28 [2015-05-09]. (原始内容存档于2015-05-18). 
  39. ^ Laracon Online-The official worldwide Laravel online conference. [2017-03-24]. (原始内容存档于2020-12-16) (英语). 
  40. ^ Search Results. 2017-03-13 [2017-03-24]. (原始内容存档于2020-05-29) (英语). 
  41. ^ 截至2017年3月 (2017-03)
  42. ^ Laravel道場. [2018-08-19]. (原始内容存档于2020-10-27). 
  43. ^ 王銘岳. 【LaravelConf專訪‘TNL】技術團隊不僅是架網站,更是編輯、社群和業務的強大後援. The News Lens 關鍵評論網. 2017-07-26 [2018-08-19]. (原始内容存档于2019-08-08) (中文(臺灣)). 
  44. ^ PHP 盛事 - 第二屆 LaravelConf Taiwan 2018 日前圓滿落幕. iThome. 2018-07-30 [2018-08-19]. (原始内容存档于2020-08-08) (中文(臺灣)). 
  45. ^ LaravelConf 台灣 2017. laravelconf.tw. [2020-02-28]. (原始内容存档于2020-09-20) (中文(臺灣)). 
  46. ^ LaravelConf Taiwan 2018 - 台灣最專業的 Laravel 開發研討會. laravelconf.tw. [2020-02-28]. (原始内容存档于2020-09-24) (中文(臺灣)). 
  47. ^ LaravelConf Taiwan 2019. laravelconf.tw. [2020-02-28]. (原始内容存档于2020-10-28).