Laravel团队发布了9.32版本

112 阅读4分钟

Laravel团队发布了9.32版本的dd()文件和行输出,加密和解密.env文件,刀片组件属性的简短语法,以及更多。

在dd输出中添加源文件

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

如果你在vendor/ 文件夹中或在没有版本控制的代码中的某个地方有一个流氓的dd() 调用,这个更新是有益的。对于所有的dd()用户来说,这是一个巨大的生活质量的改善。

加密和解密.env

Joe Dixon贡献了两个 Artisan 命令来加密和解密 .env 文件。根据PR的描述,这些命令的灵感来自Rails,它有类似的功能(从5.1开始)。

这方面的灵感来自于Rails,他们在2017年发布的Rails 5.1中就有类似的功能。

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

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

# Looks for .env and creates .env.encrypted
php artisan env:encrypt
 
# Use a supported cipher
php artisan env:encrypt --cipher=aes-256-cbc
 
# Looks for .env.production and creates .env.production.encrypted
php artisan env:encrypt --env=production

要解密一个加密的文件,你可以使用以下artisan命令。

# Decrypts .env.encrypted to create a .env file
php artisan env:decrypt --key=h9kAPUmxdZ8ZbwT3
 
# Specify options
php artisan env:decrypt \
  --key=h9kAPUmxdZ8ZbwT3 \
  --env=production \
  --filename=.env"

在工作间共享 WithoutOverlapping 密钥

Tim MacDonaldWithoutOverlapping 做出了更新,在不同的工作中应用重叠的逻辑,而不是只支持同一类别的实例。

Blade组件的简短属性语法

Pascal Baljet贡献了使用更短的语法向Blade组件传递属性的能力。

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

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

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

// Before
intval($request->input('some_int_value'));
floatval($request->input('some_float_value'));
 
// After
$request->integer('some_int_value');
$request->float('some_float_value');

Cast stringables

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

// Before
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());
 
 
// After
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');

发布说明

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

v9.32.0

新增

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

修复了

已更改

  • 用户登录时无时间限制的攻击漏洞补丁(#44069)
  • 重构:在artisan服务中注册命令(#44257)
  • 允许工厂用for方法回收模型(#44265)
  • 在验证器中使用专用方法进行占位符替换(#44296)