发行说明
版本控制方案
Laravel 和它的其他第一方包紧随其后语义版本控制.主要框架版本每年发布一次(~Q1),而次要版本和补丁版本可能每周发布一次。次要版本和补丁版本应该never 包含重大更改。
当从你的应用程序或包中引用 Laravel 框架或其组件时,你应该始终使用版本约束,例如^10.0
,因为 Laravel 的主要版本确实包含重大更改。但是,我们努力始终确保您可以在一天或更短的时间内更新到新的主要版本。
命名参数
命名参数 不在 Laravel 的向后兼容性指南中。我们可以选择在必要时重命名函数参数以改进 Laravel 代码库。因此,在调用 Laravel 方法时应谨慎使用命名参数,并了解参数名称将来可能会更改。
支持政策
对于所有 Laravel 版本,错误修复提供 18 个月,安全修复提供 2 年。对于所有其他库,包括 Lumen,只有最新的主要版本会收到错误修复。另外,请查看数据库版本由 Laravel 支持.
Version | PHP (*) | Release | 错误修复至 | 安全修复直到 |
---|---|---|---|---|
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.2 | 2023 年 2 月 14 日 | 2024 年 8 月 6 日 | 2025 年 2 月 4 日 |
11 | 8.2 | 2024 年第一季度 | 2025 年 8 月 5 日 | 2026 年 2 月 3 日 |
(*) 支持的 PHP 版本
Laravel 10
如您所知,随着 Laravel 8 的发布,Laravel 过渡到每年发布一次。以前,主要版本每 6 个月发布一次。此过渡旨在减轻社区的维护负担,并挑战我们的开发团队在不引入重大更改的情况下发布惊人的、强大的新功能。因此,我们在不破坏向后兼容性的情况下为 Laravel 9 提供了各种强大的功能。
因此,这种在当前版本中发布重要新功能的承诺可能会导致未来的“主要”版本主要用于“维护”任务,例如升级上游依赖项,这可以在这些发行说明中看到。
Laravel 10 延续了 Laravel 9.x 中所做的改进,为所有应用程序骨架方法以及用于在整个框架中生成类的所有存根文件引入了参数和返回类型。此外,还引入了一个新的、对开发人员友好的抽象层,用于启动外部进程并与之交互。此外,引入了 Laravel Pennant 以提供一种极好的方法来管理应用程序的“功能标志”。
PHP 8.1
Laravel 10.x 要求最低 PHP 版本为 8.1。
Types
应用程序框架和存根类型提示由努诺·马杜罗.
在其初始版本中,Laravel 利用了当时 PHP 中可用的所有类型提示功能。然而,在随后的几年中,许多新特性被添加到 PHP 中,包括额外的原始类型提示、返回类型和联合类型。
Laravel 10.x 彻底更新了应用程序框架和框架使用的所有存根,以将参数和返回类型引入所有方法签名。此外,无关的“文档块”类型提示信息已被删除。
此更改完全向后兼容现有应用程序。因此,没有这些类型提示的现有应用程序将继续正常运行。
Laravel 三角旗
Laravel Pennant 由蒂姆麦克唐纳.
一个新的第一方包 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。欲了解更多信息,请咨询全面的彭南特文档.
过程交互
Laravel 10.x 引入了一个漂亮的抽象层,用于通过新的方式启动外部进程并与之交互Process
正面:
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');
有关与流程交互的更多信息,请参阅全面的过程文档.
测试分析
测试分析由努诺·马杜罗.
工匠test
命令收到了一个新的--profile
允许您轻松识别应用程序中最慢测试的选项:
php artisan test --profile
为方便起见,最慢的测试将直接显示在 CLI 输出中:
害虫脚手架
现在可以默认使用 Pest 测试脚手架创建新的 Laravel 项目。要选择加入此功能,请提供--pest
通过 Laravel 安装程序创建新应用程序时的标志:
laravel new example-application --pest
生成器 CLI 提示
生成器 CLI 提示由杰西·阿切尔.
为了改善框架的开发者体验,Laravel 的所有内置make
命令不再需要任何输入。如果在没有输入的情况下调用命令,系统将提示您输入所需的参数:
php artisan make:controller