Laravel

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

Laravel
開發者Taylor Otwell
初始版本2011年6月2011-06[1]
穩定版本
8.20
(2020年12月24日2020-12-24
源代码库Laravel Repository
编程语言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 發行版本分為兩類:一般版本LTS長期支援版本[19]

一般版本
提供 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[20]

功能

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

  • Eloquent ORM (物件關係對映):將 Active Record 模式 以 PHP 實作,提供一些函式來建立 資料庫 物件之間的關聯。 依照 Active Record 模式的原則,Eloquent ORM 以 類別 代表 資料表,並將這些類別的物件實例與資料表中的單一筆資料做綁定。[22][23]
  • Query builder:於 Laravel 3 釋出,提供一個能更直接的存取 Eloquent ORM 的管道。 與其撰寫 SQL 查詢語法,Laravel 的 query builder 提供了一系列的類別與 函式,得以使用程式化呼叫的方式來執行 SQL 查詢。 同時也可以對查詢語法的執行結果做(可再被查詢的)快取。[24]
  • 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)的操作邏輯一致。[25]
  • 单元测试 也被整合到了 Laravel,其包括的測試案例能夠偵測並預防框架內的迴歸,並可以使用 Artisan CLI 來執行單元測試.
  • Homestead: 一個Vagrant虛擬機,預載了 Laravel 開發者需要的所有開發工具,包括 Ubuntu,Gulp,Bower 以及其他輔助網頁開發的工具。[26]
  • Lazy Collection:於 Laravel 6 新增,使用 PHP 的 generators 來處理大量資料,同時保持較低的內存使用率。[27]

官方提供的套件

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

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

Artisan CLI

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

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

研討會

Laracon

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

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

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

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

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

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

合作夥伴

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

  • Vehikl
  • Tighten Co.
  • Kirschbaum Development Group

参見

註記

    参考文献

    1. Maks Surguy. . maxoffsky.com. July 27, 2013 [May 10, 2015]. (原始内容存档于2020-11-27).
    2. . [2018-02-02]. (原始内容存档于2020-11-12).
    3. . 2015-04-22 [2015-05-10]. (原始内容存档于2019-09-21).
    4. Daniel Gafitescu. . 2013-06-06 [2013-12-21]. (原始内容存档于2020-11-30).
    5. . books.google.com (Packt). April 2015 [2015-09-02]. ISBN 978-1785283017. (原始内容存档于2020-08-04).
    6. . three.laravel.com. [2014-08-30]. (原始内容存档于2014-08-26).
    7. . laravel.com. [2014-08-30]. (原始内容存档于2014-09-20).
    8. Bruno Skvorc. . 2015-03-28 [2015-06-14]. (原始内容存档于2015-04-02).
    9. 辜騰玉. . iThome. 2015-04-01 [2018-08-17]. (原始内容存档于2019-08-07) (中文(台灣)‎).
    10. Raphaël Saunier. . worldcat.org (Packt). January 2014 [2015-09-02]. ISBN 978-1783287031. (原始内容存档于2019-08-07).
    11. 原先為 Laravel 4.3,因為一些內部因素而修改版本號)
    12. Eric Barnes. . 2015-01-30 [2015-05-10]. (原始内容存档于2016-11-11).
    13. Eric L. Barnes. . laravel-news.com. 2015-06-09 [2015-06-14]. (原始内容存档于2016-05-12).
    14. Eric L. Barnes. . laravel-news.com. 2016-08-23 [2016-08-23]. (原始内容存档于2016-08-28).
    15. David oscar. . digitalsoft.in. 2016-08-23 [2016-08-23].
    16. . Laravel News. 2017-01-24 [2017-02-21]. (原始内容存档于2020-11-25) (美国英语).
    17. . Laravel. Laravel. [February 28, 2020]. (原始内容存档于2021-01-30).
    18. . Laravel. Laravel. [June 16, 2020]. (原始内容存档于2020-03-10).
    19. . Laravel. [February 26, 2017]. (原始内容存档于2020-11-23).
    20. . Laravel. [February 28, 2020].
    21. 其餘未具體指出的,可以參考 Laravel 3 技術文件的功能敘述:Jeffrey Way. . 2012-11-28 [2015-05-09]. (原始内容存档于2015-05-05).
    22. . [2014-12-19]. (原始内容存档于2014-12-19).
    23. . [2015-04-17]. (原始内容存档于2020-12-03).
    24. . [2015-04-27]. (原始内容存档于2015-03-24).
    25. . laravel.com. [February 28, 2020]. (原始内容存档于2020-11-29).
    26. . [28 February 2020]. (原始内容存档于2020-11-12).
    27. . laravel.com. [February 28, 2020]. (原始内容存档于2020-10-30).
    28. . laravel.com. [February 28, 2020]. (原始内容存档于2021-01-10).
    29. . laravel.com. [February 28, 2020]. (原始内容存档于2020-11-23).
    30. . laravel.com. [February 28, 2020]. (原始内容存档于2020-11-12).
    31. . laravel.com. [February 28, 2020]. (原始内容存档于2020-11-29).
    32. . laravel.com. [February 28, 2020]. (原始内容存档于2020-11-29).
    33. . laravel.com. [February 28, 2020]. (原始内容存档于2020-11-23).
    34. . laravel.com. [February 28, 2020]. (原始内容存档于2020-11-29).
    35. . laravel.com. [February 28, 2020]. (原始内容存档于2020-11-23).
    36. Jason Lewis. . code.tutsplus.com. 2013-02-28 [2015-05-09]. (原始内容存档于2015-05-18).
    37. . [2017-03-24]. (原始内容存档于2020-12-16) (英语).
    38. . 2017-03-13 [2017-03-24]. (原始内容存档于2020-05-29) (英语).
    39. 截至2017年3月 (2017-03)
    40. . [2018-08-19]. (原始内容存档于2020-10-27).
    41. 王銘岳. . The News Lens 關鍵評論網. 2017-07-26 [2018-08-19]. (原始内容存档于2019-08-08) (中文(台灣)‎).
    42. . iThome. 2018-07-30 [2018-08-19]. (原始内容存档于2020-08-08) (中文(台灣)‎).
    43. . laravelconf.tw. [2020-02-28]. (原始内容存档于2020-09-20) (中文(台灣)‎).
    44. . laravelconf.tw. [2020-02-28]. (原始内容存档于2020-09-24) (中文(台灣)‎).
    45. . laravelconf.tw. [2020-02-28]. (原始内容存档于2020-10-28).
      This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.