Laravel 9.32 发布

Laravel团队发布了9.32,其中包含 dd() 文件和行输出、加密和解密 .env 文件、刀片组件属性的简短语法等:

将源文件添加到dd输出

Nuno Maduro 改进了 dd()dump() 输出,添加了源文件和行:

Laravel

如果你在“vendor/”文件夹中或代码中不受版本控制的地方有一个恶意的 dd() 调用,则此更新非常有用。这是对所有 dd() 的生活质量的巨大改善!

加密和解密 .env

Joe Dixon 贡献了两个工匠命令来加密和解密 .env 文件。根据 PR description 描述,这些命令受 Rails 的启发,Rails 具有类似的功能(从5.1开始):

灵感来自 Rails ,自2017年 Rails 5.1 发布以来,Rails 一直拥有类似的功能。

这样做的最大好处是,加密的环境文件可以提交到版本控制,这打开了许多可能性。

一个好处是你可以将加密文件提交给版本控制,从而对你的开发设置、暂存等进行版本控制:

# 寻找 .env 并创建 .env.encrypted
php artisan env:encrypt

# 使用支持的密码
php artisan env:encrypt --cipher=aes-256-cbc

# 寻找 .env.production 并创建 .env.production.encrypted
php artisan env:encrypt --env=production

要解密加密文件,你可以使用以下 artisan 命令:

# 解密 .env.encrypted 以创建 .env 文件
php artisan env:decrypt --key=h9kAPUmxdZ8ZbwT3

# 指定选项
php artisan env:decrypt \
  --key=h9kAPUmxdZ8ZbwT3 \
  --env=production \
  --filename=.env"

跨作业共享不重叠密钥

Tim MacDonald 为「WithoutOverlapping」提供了更新,该更新在作业之间应用重叠逻辑,而不是仅支持同一类的实例。 有关详细信息,请参阅 PR #44227

Blade 组件的简短属性语法

Pascal Baljet 提供了使用更短语法将属性传递给 Blade 组件的功能:

<!-- current syntax -->
<x-profile :user-id="$userId"></x-profile>

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

以整数和浮点数形式获取请求数据

Jason McCreary 添加了将请求数据方便地转换为浮点和整数类型的支持:

// 之前
intval($request->input('some_int_value'));
floatval($request->input('some_float_value'));

// 现在
$request->integer('some_int_value');
$request->float('some_float_value');

可转换字符串

Jason McCreary 贡献了「方便地将字符串转换为类似于 Laravel 的 HTTP 请求中的常见数据类型」:

// 之前
intval(str('shift-worker-01')->afterLast('-')->toString());
floatval(str('Result: 1.23')->after(':')->trim()->toString());
str('YeS')->lower()->toString() === 'yes';
Carbon::parse(str('DOB: 12-31-2001')->after(':')->trim()->toString());


// 现在
str('shift-worker-01')->afterLast('-')->toInteger();
str('Result: 1.23')->after(':')->trim()->toFloat();
str('YeS')->lower()->toBoolean();
str('DOB: 12-31-2001')->after(':')->trim()->toDate();

允许枚举路由绑定具有默认值

Florian Stascheck 提供了在定义路由时为枚举路由绑定提供默认值的能力:

Route::get('/categories-default/{category?}', function (CategoryBackedEnum $category = CategoryBackedEnum::Fruits) {
    return $category->value;
})->middleware('web');

请参阅 PR #44255 了解有关其工作原理的更多详细信息。

发行说明

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

v9.32.0

新增

  • 新增 env:encrypt 和 env:decrypt 命令(#44034)
  • 跨作业共享不重叠密钥 (#44227)
  • 新增缺少的 citext 类型映射到 Illuminate/Database/Console/DatabaseInspectionCommand::$typeMappings (#44237)
  • 模板组件的简短属性语法 (#44217)
  • 将源文件添加到 dd 函数输出 (#44211)
  • 新增方法以将请求数据获取为整数或浮点数 (#44239)
  • 新增 Eloquent User Provider 查询处理程序 (#44226)
  • 新增方法 Illuminate/Support/Testing/Fakes/BusFake::dispatchFakeBatch() (#44176)
  • 新增转换字符串的方法 (#44238)
  • 新增方法 Illuminate/Routing/UrlGenerator::withKeyResolver() (#44254)
  • 为集合的序列化添加一个钩子 (#44272)
  • 允许枚举路由绑定具有默认值 (#44255)
  • 新增基准实用程序类 (b4293d7, #44297)
  • 新增方法 Illuminate/Console/Scheduling/ManagesFrequencies::everyOddHour() (#44288)

修复

  • 修复递增的字符串键 (#44247)
  • 使用迁移中的命名参数修复 Fluent 类中的错误 (#44251)
  • 修复「关于」命令缓存报告 (#44305)
  • 修复内存泄漏 (#44306, #44307)

更改

  • 用户登录中永恒定时攻击漏洞的补丁(#44069)
  • 重构:在工匠服务中注册命令 (#44257)
  • 允许工厂使用 for 方法回收模型 (#44265)
  • 在验证器中使用专用方法替换占位符 (#44296)
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

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

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

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1

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