Laravel 11 现已发布!

最后更新于 作者:

Laravel 11 现已发布,包括 PHP v8.2 最低版本要求、新的 Laravel Reverb 包、简化的目录结构等等...

Laravel Reverb

Laravel Reverb 是 Laravel 应用程序的新一代原生 WebSocket 服务器,为客户端和服务器之间提供实时通信。Reverb 的一些特性包括。

极速

Reverb 为速度进行了精细调校。单个服务器可以支持数千个连接,并传输数据而不会出现 HTTP 轮询的延迟和低效。

无缝集成

使用 Laravel 的广播功能进行开发。使用 Reverb 的原生 Laravel Forge 集成进行部署。利用内置的 Pulse 支持进行监控。

为扩展而设计

通过利用 Reverb 的内置 Redis 水平扩展支持来无限扩展容量,允许您跨多个服务器管理连接和通道。

Pusher

Reverb 使用 Pusher 协议进行 WebSocket 通信,使其立即与 Laravel 广播和 Laravel Echo 兼容。

简化的目录结构

在全新安装中,文件数量减少了约 69 个。不错。

查看我们关于全新 Laravel 11 目录结构 的文章。

  • 控制器默认不再扩展任何内容。
  • 不再有中间件目录。

目前,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):
})

模型转换变化

模型转换现在被定义为一个方法而不是一个属性。当定义为方法时,我们可以做其他事情,比如直接从转换中调用其他方法。以下是一个使用 Laravel 11 中新的 AsEnumCollection 的示例

 
protected function casts(): array
{
return [
'email_verified_at' => 'datetime',
'password' => 'hashed',
'options'= AsEnumCollection::of(UserOption::class),
];
}

新的可转储特性

这旨在简化框架的核心,因为目前多个类具有 "dd" 或 "dump" 方法。另外,您可以在自己的类中使用此 Dumpable 特性

class Stringable implements JsonSerializable, ArrayAccess
{
use Conditionable, Dumpable, Macroable, Tappable;
 
str('foo')->dd();
str('foo')->dump();

阅读有关新的 可转储特性 的更多信息。

配置变化

Laravel 有很多配置文件,Laravel 11 删除了这些文件,所有配置选项都级联下来。.env 已扩展以包含您可能想要设置的所有选项。

阅读有关 配置变化 的更多信息。

新的 Once 方法

Laravel 11 包含一个新的 once 辅助方法,该方法可确保无论您调用对象方法多少次,都始终获得相同的值。当您有一些想要确保只运行一次的代码时,once 函数非常有用。

简化的默认迁移

当您启动一个新的 Laravel 应用程序时,它会附带一些 2014 年和 2019 年的默认迁移。这些迁移现在将删除日期并合并到两个文件中。

观看我们的 Instagram 短视频

路由变化

默认情况下,将只有两个路由文件,console.php 和 web.php。API 路由现在可以通过 php artisan install:api 启用,为您提供 API 路由文件和 Laravel Sanctum。

WebSocket 广播也是一样,php artisan install:broadcasting

新的 up 健康路由

Laravel 11 将包含一个新的 /up 健康路由,该路由会触发 DiagnosingHealthEvent,以便您更好地与正常运行时间监控集成。

APP_KEY 轮换

在旧版本的 Laravel 中,如果您更改了 APP_KEY,可能会导致数据库中的数据损坏。Laravel 11 有一个新的平滑轮换,它不会破坏旧的加密数据,使用 APP_PREVIOUS_KEYS 逗号分隔的列表 .env 变量。它将使用新密钥自动重新加密数据。

Console Kernel 已移除

Console Kernel 已被移除,您现在可以在 routes/console.php 中直接定义您的控制台命令。

命名参数

命名参数 不受 Laravel 向后兼容性准则的涵盖。为了改进 Laravel 代码库,他们可能会在必要时选择重命名函数参数。当使用命名参数调用 Laravel 方法时,应谨慎操作,并了解参数名称将来可能会发生变化。

预加载限制

Laravel 11 集成了 "eager load limit" 包背后的代码

User::select('id', 'name')->with([
'articles' => fn($query) => $query->limit(5)
])->get();

阅读有关 预加载限制 的更多信息。

新的 Artisan 命令

添加了新的 Artisan 命令,允许快速创建类、枚举、接口和特性

php artisan make:class
php artisan make:enum
php artisan make:interface
php artisan make:trait

新的欢迎页面

除了对 Laravel 的重大更新外,我们还将在创建新的 Laravel 应用程序时获得新的 欢迎页面

Laravel 11 何时发布?

Laravel 11 将于 2024 年 3 月 12 日发布

PHP 8.2 最低版本支持

这是早期的决定,但 Laravel 11 应用程序需要最低 PHP 8.2 版本。如果您运行的是旧版本的 PHP,现在是升级的好时机。

SQLite 3.35.0+ 必需

如果您使用 SQLite 数据库,则 Laravel 11 将需要 SQLite 3.35.0 或更高版本。

移除 Doctrine DBAL

Laravel 不再依赖 Doctrine DBAL,并且不再需要注册自定义 Doctrines 类型来正确创建和更改以前需要自定义类型的各种列类型。

安装 Laravel 11

安装 Laravel 11 最简单的方法是先设置 Laravel 安装程序

composer global require laravel/installer

然后运行

laravel new projectname

升级到 Laravel 11

Laravel Shift 是升级 Laravel 最简单的方法,但您也可以按照 Laravel 文档 中的升级指南进行操作。

Laravel 支持政策

对于所有 Laravel 版本,错误修复提供 18 个月,安全修复提供 2 年。对于所有其他库,包括 Lumen,只有最新的主要版本接收错误修复。

版本 PHP (*) 发布 错误修复截止日期 安全修复截止日期
Laravel 9 8.0 - 8.2 2022 年 2 月 8 日 2023 年 8 月 8 日 2024 年 2 月 6 日
Laravel 10 8.1 - 8.3 2023 年 2 月 14 日 2024 年 8 月 6 日 2025 年 2 月 4 日
Laravel 11 8.2 - 8.3 2024 年 3 月 12 日 2025 年 9 月 3 日 2026 年 3 月 12 日
12 8.2 - 8.3 2025 年第一季度 2026 年第三季度 2027 年第一季度

总结

到目前为止,所有这些功能都被认为是 Laravel 11 的测试版,旨在改进您的工作流程。事情可能会发生变化,也可能会发生变化,我们将随着新功能的发布而更新此帖子。

Eric L. Barnes photo

Eric 是 Laravel News 的创建者,自 2012 年以来一直在报道 Laravel。

归档于
Cube

Laravel 新闻通讯

加入 40,000 多名其他开发人员,绝不错过新的提示、教程等。

Laravel Forge logo

Laravel Forge

轻松创建和管理您的服务器,并在几秒钟内部署您的 Laravel 应用程序。

Laravel Forge
Tinkerwell logo

Tinkerwell

Laravel 开发人员必备的代码运行器。使用 AI、自动完成和本地和生产环境的即时反馈进行调试。

Tinkerwell
No Compromises logo

No Compromises

来自 No Compromises 播客的两位经验丰富的开发人员 Joel 和 Aaron 现在可供您的 Laravel 项目雇用。⬧ 固定费率 7500 美元/月。⬧ 无冗长的销售流程。⬧ 无合同。⬧ 100% 退款保证。

No Compromises
Kirschbaum logo

Kirschbaum

提供创新和稳定性,以确保您的 Web 应用程序成功。

Kirschbaum
Shift logo

Shift

运行旧版 Laravel 版本?即时、自动化的 Laravel 升级和代码现代化,让您的应用程序保持新鲜。

Shift
Bacancy logo

Bacancy

为您的项目配备经验丰富的 Laravel 开发人员,拥有 4-6 年的经验,每月仅需 2500 美元。获得 160 小时的专业知识和 15 天的无风险试用。立即安排通话!

Bacancy
Lucky Media logo

Lucky Media

立即获得好运 - Laravel 开发的理想之选,拥有十多年的经验!

Lucky Media
Lunar: Laravel E-Commerce logo

Lunar: Laravel 电子商务

Laravel 的电子商务。一个开源软件包,将现代无头电子商务功能的强大功能带到 Laravel。

Lunar: Laravel 电子商务
LaraJobs logo

LaraJobs

官方 Laravel 职位板

LaraJobs
SaaSykit: Laravel SaaS Starter Kit logo

SaaSykit: Laravel SaaS 启动套件

SaaSykit 是一个 Laravel SaaS 启动套件,包含运行现代 SaaS 所需的所有功能。支付、精美结账、管理面板、用户仪表板、身份验证、就绪组件、统计信息、博客、文档等。

SaaSykit: Laravel SaaS 启动套件
Rector logo

Rector

您无缝升级 Laravel、降低成本和加快创新以实现成功公司的合作伙伴

Rector
MongoDB logo

MongoDB

通过 MongoDB 和 Laravel 的强大集成来增强您的 PHP 应用程序,使开发人员能够轻松高效地构建应用程序。在使用熟悉的 Eloquent API 的同时支持事务、搜索、分析和移动用例。了解 MongoDB 的灵活、现代数据库如何改变您的 Laravel 应用程序。

MongoDB
Maska is a Simple Zero-dependency Input Mask Library image

Maska 是一个简单的零依赖输入掩码库

阅读文章
Add Swagger UI to Your Laravel Application image

将 Swagger UI 添加到您的 Laravel 应用程序

阅读文章
Assert the Exact JSON Structure of a Response in Laravel 11.19 image

在 Laravel 11.19 中断言响应的精确 JSON 结构

阅读文章
Build SSH Apps with PHP and Laravel Prompts image

使用 PHP 和 Laravel 提示构建 SSH 应用程序

阅读文章
Building fast, fuzzy site search with Laravel and Typesense image

使用 Laravel 和 Typesense 构建快速、模糊的站点搜索

阅读文章
Add Comments to your Laravel Application with the Commenter Package image

使用 Commenter 包在您的 Laravel 应用程序中添加评论

阅读文章