好的,Laravel 10.x 版本带来了一些重要的新特性和改进。以下是一些关键点:
-
PHP 8.1 最低要求:
- Laravel 10 要求 PHP 8.1 或更高版本才能运行。这利用了 PHP 8.1 引入的新语言特性(如枚举、只读属性等)和性能提升。
-
Laravel Pennant 包(官方发布):
- Laravel Pennant 是一个新的、官方发布的包,用于管理应用程序的功能标志(Feature Flags)。
- 它提供了一种轻量级的方法来逐步推出新功能、进行 A/B 测试或在特定条件下启用/禁用功能。
- 支持多种存储驱动(如数据库、内存等)来保存功能状态。
-
新的测试工具链:Laravel Breeze 与 Pest 集成:
- Laravel 的入门套件
breeze现在提供了使用 Pest PHP 测试框架作为默认测试套件的选项。 - Pest 是一个现代化、简洁且功能强大的测试框架,旨在提供更好的开发者体验。
- 运行
php artisan breeze:install --pest即可创建一个使用 Pest 的项目脚手架。
- Laravel 的入门套件
-
本地类型声明:
-
Laravel 10 中框架生成的骨架代码(如 Artisan 命令、控制器、测试等)开始包含本地类型声明(参数类型、返回类型)。
-
这提高了代码的清晰度和可维护性,并利用了 PHP 的类型系统优势。
-
例如:
phpclass CreateUser extends Command { // ... public function handle(): int // 返回类型声明 { // ... return self::SUCCESS; // 使用常量 } }
-
-
make:controller命令的--singleton选项:- 在创建控制器时,可以使用新的
--singleton选项来生成一个单例控制器。 - 单例控制器在整个请求生命周期内只会被解析一次,这对于某些特定的场景(如持有状态)可能有用。
- 在创建控制器时,可以使用新的
-
make:model命令的改进:make:model命令现在支持同时生成模型、迁移、工厂、资源控制器等,通过组合标志如-mfc(分别代表 Migration, Factory, Controller)来实现。- 例如:
php artisan make:model Flight -mfc会一次性生成模型、迁移、工厂和控制器文件。
-
路由
where方法支持枚举参数:-
在定义路由参数约束时,现在可以使用 PHP 枚举类型。
-
例如:
phpuse App\Enums\PostStatus; Route::get('/posts/{status}', function (PostStatus $status) { // $status 将是 PostStatus 枚举实例 })->where('status', PostStatus::class);
-
-
dispatch()函数支持调用对象:-
dispatch()辅助函数现在可以直接接受一个可调用对象(Callable)作为参数。 -
这提供了更灵活的方式来分发任务,无需先创建一个正式的 Job 类。
-
例如:
phpdispatch(function () { // 执行一些任务... });
-
-
ProcessFacade 增强:-
Laravel 10 引入了新的
ProcessFacade,提供了更流畅、面向对象的 API 来与系统进程交互(执行 shell 命令)。 -
它比直接使用
exec或shell_exec更安全、更易用,并支持链式调用和丰富的功能(如超时、环境变量设置、输出处理等)。 -
例如:
phpuse Illuminate\Support\Facades\Process; $result = Process::run('ls -la'); if ($result->successful()) { echo $result->output(); }
-
-
废弃项移除:
- 根据 Laravel 的版本支持政策,Laravel 10 移除了一些在之前版本中已被标记为废弃的功能和类。
总结: Laravel 10.x 聚焦于现代化(PHP 8.1+)、开发者体验(新的测试工具链、改进的命令行工具)、代码质量(类型声明)以及引入实用的新功能(Pennant, Process)。这些变化旨在让 Laravel 应用更健壮、更易开发维护。
请注意,以上是主要特性概述,更详细的变更和改进请参考 Laravel 10.x 的官方升级指南和发布说明。