好的,Laravel 10.X 版本引入了一些重要的新特性和改进。以下是其主要特性概述:
-
原生类型声明(Native Type Declarations):
- 框架生成的骨架代码(如控制器、模型、中间件等)现在默认包含了参数和返回值的类型声明(如
string $name,: Response)。这提高了代码的可读性、可靠性和开发工具(如 IDE)的支持度。 - 开发者可以选择是否在自己的应用代码中使用类型声明。
- 框架生成的骨架代码(如控制器、模型、中间件等)现在默认包含了参数和返回值的类型声明(如
-
process交互功能(Process Interaction):-
新增了
ProcessFacade 和一个强大的底层实现,用于更简洁、更强大地执行外部系统命令并与进程交互。 -
提供了流畅的 API 来定义命令、设置环境变量、工作目录、超时时间、输入内容,并断言预期的输出、错误输出和退出码。这使得测试涉及命令行工具的功能变得非常容易。
-
示例代码片段:
phpuse Illuminate\Support\Facades\Process; $result = Process::run('ls -la')->output(); // 运行命令并获取输出
-
-
测试辅助工具强化(Enhanced Testing):
TestResponse类新增了assertStatus、assertOk、assertNotFound等方法来简化 HTTP 状态码的断言。- 新增了
assertSessionHasErrors的便捷写法,无需再指定错误数组键名。 - 提供了更丰富的数据库测试断言方法。
-
pest脚手架(Pest Scaffolding):- 创建新项目时,可以通过
--pest选项选择使用 Pest 测试框架作为默认的测试套件,替代 PHPUnit。
- 创建新项目时,可以通过
-
路由改进(Routing Improvements):
Route:redirect方法现在支持传递 HTTP 状态码参数。- 新增了
Route:permanentRedirect方法作为 301 重定向的快捷方式。 - 路由缓存性能得到优化。
-
where链式方法(whereChainable Method):Illuminate\Collections\Collection集合类新增了where链式方法,允许在集合查询构建器风格的链式调用中轻松添加额外的where条件。
-
string辅助函数(strHelper Function):- 新增了一个全局辅助函数
str(),作为Illuminate\Support\Str门面的快捷方式,用于处理字符串操作(如生成 UUID、转换大小写、截取等)。例如:$slug = str('My Blog Post')->slug();
- 新增了一个全局辅助函数
-
可调度任务的默认配置(Scheduled Task Defaults):
- 在
app/Console/Kernel.php中,新增了schedule方法内的schedule函数,允许为所有后续定义的任务设置默认的配置(如时区、运行环境限制)。这避免了在每个任务上重复设置相同的选项。
- 在
-
destroy路由模型绑定(destroyRoute Model Binding):- 隐式路由模型绑定现在也适用于
destroy方法(通常用于删除资源)。以前,它主要应用于show,edit,update等方法。
- 隐式路由模型绑定现在也适用于
-
make:model改进:make:modelArtisan 命令增加了--pivot选项,用于快速生成数据透视表模型(Pivot Model)。- 新增了
--morph-pivot选项用于生成多态数据透视表模型(Morph Pivot Model)。
-
PHP 8.2 支持:
- Laravel 10 要求最低 PHP 版本为 8.1 ,并且完全兼容 PHP 8.2。
-
弃用通知:
- 一些在 Laravel 9 中被标记为
deprecated的功能在 Laravel 10 中被移除。开发者需要检查并更新代码以适应这些变化。
- 一些在 Laravel 9 中被标记为
-
长期支持(LTS):
- Laravel 10 是一个长期支持(LTS)版本,这意味着它将获得 2 年的错误修复 (直到 2025 年 2 月)和 3 年的安全修复(直到 2026 年 2 月)。这对于需要稳定性的项目非常重要。
总结来说,Laravel 10 着重于提升开发体验(类型声明、测试增强、process 功能)、现代化(PHP 8.1+ 要求)和稳定性(LTS)。它为开发者提供了更强大、更类型安全、更易于测试的工具集。