距离 Laravel 11 原计划的发布日期 2024 年1季度,尚有段时间。不过,在 Laracon 上,Taylor 分享了一些新特性,以及一些大的改进:
流式目录结构
目前,仅是 beta 版预览,可能还会调整。不过这是目前可以期待的…
控制器默认不再继承。
不再有中间件目录。当前 Laravel 包含了 9 个中间件,大多你都不会自定义修改。不过,如果你想自定义,可以移步 App/ServiceProvider。比如:
public function boot(): void{
EncryptCookies::except(['some_cookie']);
}
不再有 Http/Kernel
过去你在 Kernel 做的大部分事情,将可以移到 Bootstrap/App。
return Application::configure()
->withProviders()
->withRouting(
web: __DIR__.'/../routes/web.php',
commands: __DIR__.'/../routes/console.php',
)
->withMiddleware(function(Middleware Smiddleware) {
$middleware->web(append: LaraconMiddleware::class);
})
模型 casts 更新
模型 cast 现在被定义成方法,而非原来的属性。定义成方法后,我们可以做更多的事,比如在 cast 中直接调用其他方法。下面示例调用 Laravel 11 新增的 AsEnumCollection:
protected function casts(): array{
return [
'email_verified_at' => 'datetime',
'password' => 'hashed',
'options'=› AsEnumCollection::of(UserOption::class),
];
}
配置更改
Laravel 有许多配置文件,Laravel 11 将移除了这些文件及所有关联的配置项。.env 文件扩展到包含所有这些需要配置的选项。
与此相匹配的是新的 config:publish 命令,这样你就可以将任何想配置的选项带回来。即使带回后,新的级联特性也允许你将每一个不需要自定义的选项删除。
默认迁移文件瘦身
从 2014 及 2019 起,当你启用新的 Laravel 时,默认带有一些迁移文件。现在这些会移除日期并合并到只有两个文件。
路由变更
默认,只会有两个路由文件:web.php 和 console.php。API 路由现在可以根据需要通过 php artisan install:api, 安装 API 路由文件和 Laravel Sanctum。
Websocket 广播也一样,通过 php artisan install:broadcasting 命令安装。
Console Kernel 移除
Console 内核被移除了,你可以将 console 命令移到 routes/console.php。
命名参数
Laravel 的后向兼容性向导不包含命名参数。必要时,为改善 Laravel 的基础代码库,我们可能重命名函数的参数。因此,调用 Laravel 方法时,应该谨慎使用命名参数,且明白该参数名在将来有可能会有更改。
最低支持 PHP 8.2
这是一个早期决定,不过 Laravel 11 应用会要求最低 PHP 8.2 版。如果你运行的是老版本的 PHP,是时候升级了。
Laravel 支持政策
对于所有的 Laravel 发行版,提供 18个月的 Bug 修复支持以及两年的安全修复支持。对于所有其他库,包括 Lumen,只有最新的 Major 发行版接收 Bug 修复。
Version | PHP (*) | Release | Bug Fixes Until | Security Fixes Until |
---|---|---|---|---|
Laravel 9 | 8.0 – 8.2 | February 8th, 2022 | August 8th, 2023 | February 6th, 2024 |
Laravel 10 | 8.1 – 8.2 | Q1 2023 | August 6th, 2024 | February 4th, 2025 |
Laravel 11 | 8.2 | Q1 2024 | August 5th, 2025 | February 3rd, 2026 |
总结
目前为止,所有这些被考虑到 Laravel 11 的 Beta 版中,旨在改进工作流。可能会有所调整,我们将保持更新。