Laravel 9.33、9.34版本发布

2023-06-01 00:00:00 laravel 版本 发布

Laravel 团队2022年10月5日发布了9.33和9.34,引入了 Laravel Precognition、自闭合刀片组件的短属性语法等。

注意:

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


Laravel 预知 (9.33)

Tim MacDonald贡献了 Precognition 的介绍。虽然完整的解释超出了本文的范围,但请查看Pull Request #44339以获得对 Precognition 提供的内容的深入描述。

总之,这是 TLDR:

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

 Precognition 引入了请求/响应标头、中间件,在某些情况下还引入了 Laravel 以独特方式响应的全局帮助器。
 
 当一个 Precognition 请求进入 Laravel 时,直到控制器被执行。这包括所有中间件、路由模型绑定解析、表单请求验证等。

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


自闭合Blade组件的简短属性语法 (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 的“BackedEnum” (9.34)

Nuno Maduro为支持的枚举贡献了 Blade 渲染支持。

以下面的路由视图为例:

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

给定$role变量,它现在将在 Blade 中正确渲染:

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


将 cc() 方法添加到 MailFake (9.33)

Adrian Nürnbergercc()为邮寄假货贡献了缺失的方法。

实现如下:

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


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

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

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


发行说明

您可以在下面查看新功能和更新的完整列表以及GitHub 上9.33.0 和 9.34.0之间的差异。

以下发行说明直接来自变更日志:

https://github.com/laravel/framework/compare/v9.31.0...v9.32.0
https://github.com/laravel/framework/blob/03795ab20ecf0c9bca61737b9a5c2a353712df9e/CHANGELOG.md#v9340---2022-10-04


v9.34.0

添加
自闭合刀片组件的简短属性语法 ( #44413 )
添加对 PHP 的 BackedEnum 的支持以在刀片视图上“渲染”(#44445)

修复
修复了 Symfony 响应的预识别标头(#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 支持添加了缺失的变形方法 ( #44364 )
介绍 Laravel 预知 ( #44339 )
添加Illuminate/Routing/Route::flushController()(#44386)

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

改变
改进了编译视图的 dd 源代码 ( #44347 )
仅在来自 dump.php ( #44367 )的 dd 调用上打印源代码
确保支持 PHP 8.2 ( #44374 )的 Carbon 版本


转:

https://laravel-news.com/laravel-9-34-0

相关文章