Laravel 9.34 Released

Laravel

Laravel 团队发布了 9.33 和 9.34,引入了 Laravel Precognition、自闭合模板组件的短属性语法等。

注意:我们还介绍了 Laravel 9.33 中发布的关键新功能,这些新功能是在典型的每周发布之间的上周五发布的。

Laravel Precognition (9.33)

Tim MacDonald 贡献了 Precognition 的介绍。请查看 PR #44339 以深入了解 Precognition 提供的功能。 这是 TLDR:

  • Precognition 是一项新的框架功能,允许开发人员为其用户创建新的和改进的体验。

  • Precognition 引入了请求/响应标头、中间件,在某些情况下还引入了 Laravel 以独特方式响应的全局帮助器。

  • 当一个 Precognition 请求进入 Laravel 时,直到控制器被执行。 这包括所有中间件、路由模型绑定解析、表单请求验证等。

你真的应该阅读 PR #44339 来查看如何利用这个令人兴奋的新功能的示例!

自闭合模板组件的简短属性语法 (9.34)

Perry van der Meer 为自闭合模板组件贡献了短属性语法。 此 PR 建立在 Laravel 9.32 中针对 Blade 组件发布的短属性语法之上:

<!-- current short syntax -->
<x-profile :$userId></x-profile>

<!-- short syntax for self-closing component -->
<x-profile :$userId/>

在 Blade 视图中渲染 PHP 「Backed Enum」 (9.34)

Nuno Maduro 为支持的枚举提供了 模板渲染支持。 以下面的路由视图为例:

// routes/web.php
Route::get('/', function () {
    return view('dashboard', ['role' => UserRoles:: ADMIN]);
});

鉴于 $role 变量,它现在将在模板中正确呈现:

Hello, {{ $role }}.

<!-- ❌ Before: TypeError: htmlspecialchars(): Argument #1 ($string) must be of type string -->
<!-- ✅ After: Hello, Admin. -->

新增 cc() 方法到 MailFake (9.33)

Adrian Nürnberger 贡献了缺失的cc() 方法来发送假邮件。 实现如下:

public function cc($users)
{
    return (new PendingMailFake($this))->cc($users);
}

忽略 Stringable contains() 和 containsAll() 中的大小写 (9.33)

Jae Toole 为 Stringable contains()containsAll() 方法提供了不区分大小写的支持:

// returns true
$this->stringable('taylor')
     ->contains(['LOR'], true);

// returns true
$this->stringable('taylor otwell')
     ->containsAll(['TAYLOR', 'OTWELL'], true);

发行说明

你可以在下面查看新功能和更新的完整列表以及 9.33.0 和 9.34.0 之间的差异 在 GitHub 上。 以下发行说明直接来自 changelog

v9.34.0

新增

  • 自闭合模板组件的简短属性语法 (#44413)
  • 添加对 PHP 支持的枚举的支持以在模板视图上渲染 (#44445)

修复

  • 修复了 Symfony 响应的 Precognition 标头 (#44424)
  • 允许创建带点的数据库 (#44436)
  • 修复 Windows 系统上的 dd 源(#44451)

修改

  • 缺少主机时向 db 命令添加错误输出 (#44394)
  • 修改 Illuminate/Database/Schema/ForeignIdColumnDefinition::constrained() 方法 (#44425)
  • 允许在基于闭包的侦听器中侦听维护模式事件 (#44417)
  • 允许工厂回收给定类型的多个模型 (#44328)
  • 改进了多个编辑器和 docker 环境中的 dd 可点击链接 (#44406)

v9.33.0

新增

  • 新增方法 Illuminate/Support/Testing/Fakes/MailFake::cc() (#44319)
  • 将忽略大小写的 Str::contains 和 Str::containsAll 添加到 Stringable contains 和 containsAll (#44369)
  • 为 ULID 支持添加了缺失的 morphs 方法 (#44364)
  • 介绍 Laravel Precognition (#44339)
  • 新增方法 Illuminate/Routing/Route::flushController() (#44386)

修复

  • 修复 PHPUnit 的 Annotations 注册表上的内存泄漏 (#44324#44336)
  • 使用配置 prefix 修复了Illuminate/Filesystem/FilesystemAdapter::url() (#44330)
  • 修复 Timebox 类中「从浮点数到整数的隐式转换失去精度」错误(#44357)

修改

  • 改进了编译视图上的 dd 源代码 (#44347)
  • 仅在来自 dump.php 的 dd 调用上打印源代码 (#44367)
  • 确保支持 PHP 8.2 的 Carbon 版本 (#44374)
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://laravel-news.com/laravel-9-34-0

译文地址:https://learnku.com/laravel/t/72656

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!