Laravel 技术专题简介-编程知识网

简介

此条目或章节需要时常更新。内容可能会随着时间而有所变化或进展。未有可靠来源的臆测内容可能会被移除。若您发现有尚未更新的内容,欢迎您编辑更新。Laravel开发者Taylor Otwell首次发布2011年6月,​11年前​(2011-06)当前版本10.0.4 (2023年3月2日;稳定版本) 源代码库github.com/laravel/framework编程语言PHP类型Web应用框架许可协议MIT许可协议网站laravel.comLaravel 是一个由Taylor Otwell所创建,自由开源的 PHP Web 框架,旨在实现的Web软件的MVC架构,并作为CodeIgniter的替代方案。其源代码托管于GitHub,许可条款为MIT许可证。Laravel的特色包含:支持用户身份验证和许可,具有模块化的包系统且有专属的包库,提供连接许多种类的关连式数据库的方式,提供工具来协助应用程序的部署和维持,并且发展出许多语法糖。Laravel与Symfony、Zend、CodeIgniter、Yii2 和其他框架一起被视为最受欢迎的 PHP 框架之一。

历史

Laravel 1Laravel在2011年6月9日发布了第一个 Beta测试版本,并在一个月后发布正式版本 Laravel 1。Laravel 1 默认提供了身份验证、多语系、 Model(MVC)、view、session、路由和其他机制,但缺少控制器,以至于无法成为一个真正的MVC框架。Laravel 22011年9月正式发布,并由作者与社群提供了许多优化。主要的新功能包括支持 controller,使 Laravel 2 成为真正的 MVC 框架,并且实现了 控制反转(IoC) ,和提供样版引擎 blade。 但同时也带来一个缺点:移除了第三方包的支持。Laravel 3于2012年发布。带来的新功能包括:命令行接口(CLI) Artisan,支持多种 数据库管理系统、提供 migration 为数据库做 版本控制 ,支持事件(event)的处理,以及封装系统 Bundles。 随着Laravel 3 的发布,Laravel 的用户和受欢迎程度也随之增加。Laravel 4代号为 Illuminate,于2013年发布。此版本将过去的代码全部重写,并将各自分散许多的包中,并透过 Composer 管理(一个应用程序等级的 包管理工具 )。 这样的修改提高了Laravel 4的可扩展性,搭配其官方的六个月的小数点版本的发布项目。其他 Laravel 4的特点包括:数据库的 seeding (为数据库建置初始的资料),支持 队列(queue),支持发送不同类型的电子邮件,并支持数据库的 软删除。Laravel 52015年2月发布。 新的特点包括:提供周期性地执行任务的调度器 Scheduler,提供一个抽象层 Flysystem ,让远程与本地端的 文件系统 能有相同的操作方式,提供 Elixir 以管理静态资源,并提供了可简化串接 OAuth 登录的包 Socialite 。 Laravel 5 也同时修改了 目录结构 。Laravel 5.12015年6月发布,是 Laravel 的第一个 长期支持版本(LTS) ,并项目提供两年的 错误修正 和三年的 安全性更新 。 同时也预计未来每两年会发布一次新的 LTS 版本。Laravel 5.3于2016年8月23日发布。此版本着重在协助用户加速开发,并提供了优化开发流程的工具。Laravel 5.42017年1月24日发布。此版本提供了许多新功能,像 Laravel Dusk,Laravel Mix,Components & Slots(Blade),Markdown Emails,自动 Facades、路由的优化,collection 的高阶函数,还有很多其他功能。Laravel 62019年9月3日发布。引入语义化版本控制,兼容 Laravel Vapor,优化许可响应、Job Middleware、Lazy Collections 和 Sub-query 等功能。移除默认的前端脚手架,并转移至 Laravel UI 包。Laravel 72020年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指令。Laravel 82020年9月8日发布。Laravel 8通过引入Laravel Jetstream、模型工厂类、迁移压缩、队列批处理、改善速率限制、队列改进、动态Blade组件、Tailwind标签页视图、时间测试助手、artisan serve的改进、事件监听器的改进,以及各种其他错误修复和可用性改进,对Laravel 7.x继续进行了改善。

版本发布纪录

自Laravel 9开始,所有版本均提供18个月的错误修正与2年的安全性更新。

版本 发布日期 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日≥ 5.4.0

旧版本,不再支持: 5.1 LTS

2015年6月9日≥ 5.5.9

旧版本,不再支持: 5.2

2015年12月21日≥ 5.5.9

旧版本,不再支持: 5.3

2016年8月23日≥ 5.6.4

旧版本,不再支持: 5.4

2017年1月24日≥ 5.6.4

旧版本,不再支持: 5.5 LTS

2017年8月30日≥ 7.0.0

旧版本,不再支持: 5.6

2018年2月7日≥ 7.1.3

旧版本,不再支持: 5.7

2018年9月4日≥ 7.1.3

旧版本,不再支持: 5.8

2019年2月26日≥ 7.1.3

旧版本,不再支持: 6 LTS

2019年9月3日≥ 7.2 且 ≤ 8.0

旧版本,不再支持: 7

2020年3月3日≥ 7.2.5 且 ≤ 8.0

旧版本,不再支持: 8

2020年9月8日≥ 7.3 且 ≤ 8.1

旧版本,仍被支持: 9

2022年2月8日≥ 8.0 且 ≤ 8.1

当前版本: 10

2023年2月14日≥ 8.1

未来版本: 11

2024年1月

图例:

旧版本旧版本,仍被支持当前版本最新预览版本未来版本

来源: Laravel

功能

以下几点为 Laravel 的核心设计理念

Eloquent ORM (对象关系映射):将 Active Record 模式 以 PHP 实现,提供一些函数来创建 数据库 对象之间的关系。 依照 Active Record 模式的原则,Eloquent ORM 以 类别 代表 资料表,并将这些类别的对象实例与资料表中的单一笔资料做绑定。

Query builder:于 Laravel 3 发布,提供一个能更直接的访问 Eloquent ORM 的管道。 与其撰写 SQL 查询语法,Laravel 的 query builder 提供了一系列的类别与 函数,得以使用程序化调用的方式来执行 SQL 查询。 同时也可以对查询语法的执行结果做(可再被查询的)缓存。

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)的操作逻辑一致。

单元测试 也被集成到了 Laravel,其包括的测试案例能够侦测并预防框架内的回归,并可以使用 Artisan CLI 来执行单元测试.

Homestead: 一个Vagrant虚拟机,预载了 Laravel 开发者需要的所有开发工具,包括 Ubuntu,Gulp,Bower 以及其他辅助网页开发的工具。

Lazy Collection:于 Laravel 6 新增,使用 PHP 的 generators 来处理大量资料,同时保持较低的内存使用率。

官方提供的包

可透过 Composer 以及 Packagist 安装下列包:

Cashier:于 Laravel 4.2 推出,可串接订阅制付款服务如 Stripe,并提供 优惠券 和 收据 等功能。

Envoy:于 Laravel 4.2 推出,提供了简洁、轻量的语法,定义远程服务器上运行的常见任务,使用 Blade 风格的语法,可以简单的设置部署任务、执行 Artisan 指令等。

Socialite:于 Laravel 5.0 推出,简化串接 OAuth 的流程,提供平台如 Facebook、Twitter、Google、GitHub 和 Bitbucket。

Passport:于 Laravel 5.3 推出,完整的 OAuth2 服务器实现。

Scout:于 Laravel 5.3 推出,Eloquent 全文搜索包,默认使用 Algolia 驱动。

Dusk:于 Laravel 5.4 推出,易于使用的浏览器自动化测试包。

Horizon:于 Laravel 5.5 推出,以 Redis 为基础的 Laravel 队列仪表板和设置系统。

Telescope:于 Laravel 5.7 推出,提供简洁的仪表板,监控应用程序的请求(Request)、异常(Exception)、日志(Log)、数据库查询(Database queries)、排队的作业(Queued jobs)、邮件(Mail)、通知(Notifications)、缓存操作、计划任务(Notifications)、变量监控(variable dumps)等。

Sanctum:于 Laravel 7.0 推出,为单页应用、移动应用程序和基于令牌的简单API,提供了轻巧的身份验证系统。

Artisan CLI

Laravel 的 命令行接口 (CLI),称为 Artisan,于 Laravel 3 推出时功能还相当有限。 随后 Laravel 将架构改为以 Composer 作为基底,让 Artisan 得以和 Symfony 框架的组件互补,也因此 Laravel 4 的 Artisan 提供了更多的功能。

Artisan 的功能被分散到不同的子命令,用以协助打造与管理这些由 Laravel 建构而成的软件。最常见的使用情境如:操作数据库的 migration & seeding、汲取包的静态资源、为新创建的 controller 或 migration 产生代码模板(为开发者省去重复撰写相同代码的时间)。开发者也可以自行新增新的命令,来扩展 Artisan 的功能(如自动化的执行任务)。

研讨会

Laracon

Laracon为Laravel官方举办的研讨会,曾在美国、欧洲和网络上举办,主题囊括Laravel的开发、使用、和与其有关的软件开发议题。每年的会议具有各种不同的赞助者和组织成员,但 Laravel官方、Laravel News和UserScape通常是主要的组织成员。

一般来说,每一年都会在美国和欧洲举办一次研讨会。而2017年Laracon也首度于网络上举办,未来也将会有更多活动以类似形式出现在网络上。

目前已经举办了以下场次:

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道场主办人兼台湾的社群推广者范圣佑发起的研讨会。自2017年开始,于张荣发基金会国际会议中心举办。研讨会议程包括技术主题、实做主题以及包发表会等内容,并自2021年起与前端框架Vue合办Laravel x Vue Conf Taiwan

目前已经举办了以下场次:

LaravelConf Taiwan 2017 – 2017年7月1日

LaravelConf Taiwan 2018 – 2018年7月8日

LaravelConf Taiwan 2019 – 2019年7月13日

LaravelConf Taiwan 2020 – 2020年7月25日

Laravel x Vue Conf Taiwan 2021 – 2021年10月16日 ~ 10月17日

Laravel x Vue Conf Taiwan 2022 – 2022年12月2日 ~ 12月3日

合作伙伴

在2017年4月7日,Taylor Otwell 公告出了 Laravel 网站的“合作伙伴”章节。其目的是为了提供 Laravel 社群一个公司的列表,列表内所列出的公司,都是能够提供 Laravel 最佳发展和指导的可信公司。 2017年9月,Laravel 的合作伙伴包括:

Vehikl

Tighten Co.

Kirschbaum Development Group