发布说明
版本方案
Laravel 及其其他一方包遵循语义版本控制。主要框架版本每年发布一次(大约在第一季度),而次要和补丁版本可能每周发布。次要和补丁版本绝不应包含破坏性更改。
当从您的应用程序或包中引用 Laravel 框架或其组件时,您应始终使用诸如^10.0
之类的版本约束,因为 Laravel 的主要版本确实包含破坏性更改。然而,我们努力确保您可以在一天或更短的时间内更新到新的主要版本。
命名参数
命名参数不在 Laravel 的向后兼容性指南中。我们可能会在必要时选择重命名函数参数,以改进 Laravel 代码库。因此,在调用 Laravel 方法时使用命名参数应谨慎进行,并理解参数名称可能会在将来更改。
支持政策
对于所有 Laravel 版本,错误修复提供 18 个月,安全修复提供 2 年。对于所有附加库,包括 Lumen,只有最新的主要版本接收错误修复。此外,请查看 Laravel 支持的数据库版本数据库介绍。
版本 | PHP (*) | 发布 | 错误修复截止 | 安全修复截止 |
---|---|---|---|---|
8 | 7.3 - 8.1 | 2020年9月8日 | 2022年7月26日 | 2023年1月24日 |
9 | 8.0 - 8.2 | 2022年2月8日 | 2023年8月8日 | 2024年2月6日 |
10 | 8.1 - 8.3 | 2023年2月14日 | 2024年8月6日 | 2025年2月4日 |
11 | 8.2 - 8.3 | 2024年3月12日 | 2025年8月5日 | 2026年2月3日 |
(*) 支持的 PHP 版本
Laravel 10
如您所知,Laravel 在发布 Laravel 8 时过渡到每年发布一次。之前,主要版本每 6 个月发布一次。这一过渡旨在减轻社区的维护负担,并挑战我们的开发团队在不引入破坏性更改的情况下发布令人惊叹、强大的新功能。因此,我们在 Laravel 9 中发布了各种强大的功能,而没有破坏向后兼容性。
因此,这一承诺在当前版本中发布出色的新功能可能会导致未来的“主要”版本主要用于“维护”任务,例如升级上游依赖项,这可以在这些发布说明中看到。
Laravel 10 通过为所有应用程序骨架方法以及用于生成框架中类的所有存根文件引入参数和返回类型,继续了 Laravel 9.x 的改进。此外,还引入了一个新的、对开发者友好的抽象层,用于启动和与外部进程交互。此外,Laravel Pennant 已被引入,以提供一种管理应用程序“功能标志”的绝佳方法。
PHP 8.1
Laravel 10.x 要求最低 PHP 版本为 8.1。
类型
应用程序骨架和存根类型提示由Nuno Maduro贡献。
在其初始发布时,Laravel 利用了当时 PHP 中可用的所有类型提示功能。然而,PHP 在随后的几年中增加了许多新功能,包括额外的原始类型提示、返回类型和联合类型。
Laravel 10.x 彻底更新了应用程序骨架和框架使用的所有存根,以在所有方法签名中引入参数和返回类型。此外,删除了多余的“文档块”类型提示信息。
此更改与现有应用程序完全向后兼容。因此,现有应用程序即使没有这些类型提示也将继续正常运行。
Laravel Pennant
Laravel Pennant 由Tim MacDonald开发。
一个新的第一方包 Laravel Pennant 已发布。Laravel Pennant 提供了一种轻量级、简化的方法来管理应用程序的功能标志。开箱即用,Pennant 包括一个内存中的array
驱动程序和一个用于持久功能存储的database
驱动程序。
可以通过Feature::define
方法轻松定义功能:
use Laravel\Pennant\Feature;
use Illuminate\Support\Lottery;
Feature::define('new-onboarding-flow', function () {
return Lottery::odds(1, 10);
});
一旦定义了功能,您可以轻松确定当前用户是否有权访问给定功能:
if (Feature::active('new-onboarding-flow')) {
// ...
}
当然,为了方便起见,Blade 指令也可用:
@feature('new-onboarding-flow')
<div>
<!-- ... -->
</div>
@endfeature
Pennant 提供了各种更高级的功能和 API。有关更多信息,请查阅全面的 Pennant 文档。
进程交互
进程抽象层由Nuno Maduro和Taylor Otwell贡献。
Laravel 10.x 通过新的Process
facade 引入了一个美丽的抽象层,用于启动和与外部进程交互:
use Illuminate\Support\Facades\Process;
$result = Process::run('ls -la');
return $result->output();
甚至可以在池中启动进程,方便地执行和管理并发进程:
use Illuminate\Process\Pool;
use Illuminate\Support\Facades\Process;
[$first, $second, $third] = Process::concurrently(function (Pool $pool) {
$pool->command('cat first.txt');
$pool->command('cat second.txt');
$pool->command('cat third.txt');
});
return $first->output();
此外,进程可以被伪造以方便测试:
Process::fake();
// ...
Process::assertRan('ls -la');
有关与进程交互的更多信息,请查阅全面的进程文档。
测试分析
测试分析由Nuno Maduro贡献。
Artisan test
命令接收了一个新的--profile
选项,允许您轻松识别应用程序中最慢的测试:
php artisan test --profile
为了方便起见,最慢的测试将直接显示在 CLI 输出中:
Pest 脚手架
新的 Laravel 项目现在可以默认使用 Pest 测试脚手架创建。要选择此功能,请在通过 Laravel 安装程序创建新应用程序时提供--pest
标志:
laravel new example-application --pest
生成器 CLI 提示
生成器 CLI 提示由Jess Archer贡献。
为了改善框架的开发者体验,所有 Laravel 的内置make
命令不再需要任何输入。如果命令在没有输入的情况下调用,您将被提示输入所需的参数:
php artisan make:controller
Horizon / Telescope 改版
Horizon和Telescope已更新为具有现代外观,包括改进的排版、间距和设计:
