Laravel
Laravel 是一個由Taylor Otwell所建立,免费的開源[2] PHP Web 框架,旨在實作的Web軟體的MVC架構,並作為CodeIgniter的替代方案。其原始碼託管於GitHub,許可條款為MIT許可證。[3]Laravel的特色包含:支援用户身份驗證和授權,具有模組化的套件系統且有專屬的套件庫,提供連接許多種類的關連式資料庫的方式,提供工具來協助應用程式的部署和维持,並且發展出許多語法糖。[4][5][6][7]
開發者 | Taylor Otwell |
---|---|
初始版本 | 2011年6月[1] |
穩定版本 | 8.20 (2020年12月24日 ) |
源代码库 | Laravel Repository |
编程语言 | PHP |
类型 | Web應用框架 |
许可协议 | MIT授權條款 |
网站 | laravel |
Laravel與Symfony、Zend、CodeIgniter、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.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 新增,統一了 檔案系統 的函式,讓本地端和 雲端 儲存空間(如 亞馬遜 S3、Rackspace 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 的流程,提供平台如 Facebook、Twitter、Google、GitHub 和 Bitbucket。[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]。
目前已經舉辦了以下場次:
日期 | 位置 |
---|---|
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日 | 阿姆斯特丹 |
合作夥伴
在2017年4月7日,Taylor Otwell 公告出了 Laravel 網站的「合作夥伴」章節。其目的是為了提供 Laravel 社群一個公司的列表,列表內所列出的公司,都是能夠提供 Laravel 最佳發展和指導的可信公司。 2017年9月,Laravel 的合作夥伴包括:
- Vehikl
- Tighten Co.
- Kirschbaum Development Group
参見
- 各網頁框架系統的比較
- 各網頁模板引擎的比較
註記
参考文献
- Maks Surguy. . maxoffsky.com. July 27, 2013 [May 10, 2015]. (原始内容存档于2020-11-27).
- . [2018-02-02]. (原始内容存档于2020-11-12).
- . 2015-04-22 [2015-05-10]. (原始内容存档于2019-09-21).
- Daniel Gafitescu. . 2013-06-06 [2013-12-21]. (原始内容存档于2020-11-30).
- . books.google.com (Packt). April 2015 [2015-09-02]. ISBN 978-1785283017. (原始内容存档于2020-08-04).
- . three.laravel.com. [2014-08-30]. (原始内容存档于2014-08-26).
- . laravel.com. [2014-08-30]. (原始内容存档于2014-09-20).
- Bruno Skvorc. . 2015-03-28 [2015-06-14]. (原始内容存档于2015-04-02).
- 辜騰玉. . iThome. 2015-04-01 [2018-08-17]. (原始内容存档于2019-08-07) (中文(台灣)).
- Raphaël Saunier. . worldcat.org (Packt). January 2014 [2015-09-02]. ISBN 978-1783287031. (原始内容存档于2019-08-07).
- 原先為 Laravel 4.3,因為一些內部因素而修改版本號)
- Eric Barnes. . 2015-01-30 [2015-05-10]. (原始内容存档于2016-11-11).
- Eric L. Barnes. . laravel-news.com. 2015-06-09 [2015-06-14]. (原始内容存档于2016-05-12).
- Eric L. Barnes. . laravel-news.com. 2016-08-23 [2016-08-23]. (原始内容存档于2016-08-28).
- David oscar. . digitalsoft.in. 2016-08-23 [2016-08-23].
- . Laravel News. 2017-01-24 [2017-02-21]. (原始内容存档于2020-11-25) (美国英语).
- . Laravel. Laravel. [February 28, 2020]. (原始内容存档于2021-01-30).
- . Laravel. Laravel. [June 16, 2020]. (原始内容存档于2020-03-10).
- . Laravel. [February 26, 2017]. (原始内容存档于2020-11-23).
- . Laravel. [February 28, 2020].
- 其餘未具體指出的,可以參考 Laravel 3 技術文件的功能敘述:Jeffrey Way. . 2012-11-28 [2015-05-09]. (原始内容存档于2015-05-05).
- . [2014-12-19]. (原始内容存档于2014-12-19).
- . [2015-04-17]. (原始内容存档于2020-12-03).
- . [2015-04-27]. (原始内容存档于2015-03-24).
- . laravel.com. [February 28, 2020]. (原始内容存档于2020-11-29).
- . [28 February 2020]. (原始内容存档于2020-11-12).
- . laravel.com. [February 28, 2020]. (原始内容存档于2020-10-30).
- . laravel.com. [February 28, 2020]. (原始内容存档于2021-01-10).
- . laravel.com. [February 28, 2020]. (原始内容存档于2020-11-23).
- . laravel.com. [February 28, 2020]. (原始内容存档于2020-11-12).
- . laravel.com. [February 28, 2020]. (原始内容存档于2020-11-29).
- . laravel.com. [February 28, 2020]. (原始内容存档于2020-11-29).
- . laravel.com. [February 28, 2020]. (原始内容存档于2020-11-23).
- . laravel.com. [February 28, 2020]. (原始内容存档于2020-11-29).
- . laravel.com. [February 28, 2020]. (原始内容存档于2020-11-23).
- Jason Lewis. . code.tutsplus.com. 2013-02-28 [2015-05-09]. (原始内容存档于2015-05-18).
- . [2017-03-24]. (原始内容存档于2020-12-16) (英语).
- . 2017-03-13 [2017-03-24]. (原始内容存档于2020-05-29) (英语).
- 截至2017年3月
- . [2018-08-19]. (原始内容存档于2020-10-27).
- 王銘岳. . The News Lens 關鍵評論網. 2017-07-26 [2018-08-19]. (原始内容存档于2019-08-08) (中文(台灣)).
- . iThome. 2018-07-30 [2018-08-19]. (原始内容存档于2020-08-08) (中文(台灣)).
- . laravelconf.tw. [2020-02-28]. (原始内容存档于2020-09-20) (中文(台灣)).
- . laravelconf.tw. [2020-02-28]. (原始内容存档于2020-09-24) (中文(台灣)).
- . laravelconf.tw. [2020-02-28]. (原始内容存档于2020-10-28).