侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

Laravel 9.49版本发布

Laravel  /  管理员 发布于 1个月前   74

Laravel团队在本周发布了9.49版本, 支持一系列的枚举, CLI提示, 以及更多. 

请务必查看更新日志,因为本周的版本充满了新的添加,修复,以及过去两周的变化;

Laravel团队的大部分成员上周都在Laracon EU。


支持铸造集合或枚举数组

Ralph J. Smit贡献了对枚举数组铸造的支持:

use App\Enums\ServerStatus;
use Illuminate\Database\Eloquent\Casts\AsEnumCollection;
 
protected $casts = [
    'statuses' => AsEnumCollection::class.':'.ServerStatus::class,
];

而这里是一个使用数组版本的例子:

use App\Enums\ServerStatus;
use Illuminate\Database\Eloquent\Casts\AsEnumArrayObject;
 
protected $casts = [
    'statuses' => AsEnumArrayObject::class.':'.ServerStatus::class,
];

更多信息请参见Casting Arrays Of Enums文档。

https://laravel.com/docs/9.x/eloquent-mutators#casting-arrays-of-enums

CLI提示

Jess Archer 贡献了自动提示用户缺少命令参数的能力,而不是返回错误。

这个功能可以通过实现PromptsForMissingInput接口来使用:

use Illuminate\Console\Command;
use Illuminate\Contracts\Console\PromptsForMissingInput;
 
class MyCommand extends Command implements PromptsForMissingInput
{
    // ...
}

这一功能也被添加到所有的make:*命令中。

之前:

1.png

之后:

2.png


新的TestResponse JSON断言

Seth Phat贡献了两个断言方法,用于断言JSON是一个数组和断言JSON是一个对象。

下面是Pull Request #45731中的一些例子:

$this->json('GET', 'countries')
    ->assertOk()
    ->assertJsonIsArray(); // [ {..}, {...}, ....]
 
$this->json('GET', 'users')
    ->assertOk()
    ->assertJsonIsArray('data'); // {'data': [...]}
 
$this->json('GET', 'countries/US')
    ->assertOk()
    ->assertJsonIsObject(); // {id: '...', name: '..'}
 
$this->json('GET', 'users/1')
    ->assertOk()
    ->assertJsonIsObject('data'); // {'data': {id: '..', name: '...'}}


"缺失 "的验证规则

Tim MacDonald贡献了 "缺失 "验证规则,它是禁止验证规则的一个严格版本。

被验证的字段必须不存在于输入数据中。

这里列出了所有可能的变体,包括典型的if和unless变体:

`missing`
`missing_if:attribute,value`
`missing_unless:attribute,value`
`missing_with:attribute1,attribute2`
`missing_with_all:attribute1,attribute2`


Wendell Adriel为错误处理贡献了新的HTTP响应方法:

>今天在#Laravel 9.49发布:来自我的PR的HTTP客户端的新方法可以使用

$response->clientError();
$response->serverError();
$response->throwIfStatus(403);
$response->throwUnlessStatus(200)。
你可以查看这里的文档:https://t.co/ETLJRTUKNv
- Wendell Adriel(@wendell_adriel) 2023年1月31日

下面是Wendell贡献的一些方法的例子:

// Only throws an exception if the HTTP response code is 500
$response->throwIfStatus(500);
 
// Callable
$response->throwIfStatus(fn ($status) => $status === 500);
 
// Throws an exception if the HTTP response code is not 200
$response->throwUnlessStatus(500);
 
// Only throws an exception if the HTTP response code is >= 400 and < 500
$response->throwIfClientError();
 
// Only throws an exception if the HTTP response code is >= 500
$response->throwIfServerError();

请查看HTTP客户端错误处理文档以了解更多细节。

https://laravel.com/docs/9.x/http-client#error-handling


对队列工作者输出的可配置的时区支持

Matias Mäki 贡献了一个 queue.log_timezone 配置选项,

以便 queue:work 能够以不同于应用程序默认 app.timezone 设置的时区输出时间戳:

>增加这个选项的理由是,对于通过Log facade用Log::setTimezone制作的日志文件来说,
这已经是可以做到的,但WorkCommand不是使用Logging子系统,
而是使用Console\OutputStyle直接写回stdout和stderr。


对外键的删除不采取行动

Erfan Hemmati为外键的迁移贡献了一个 noActionOnDelete() 方法:

$table
    ->foreign('user_id')
    ->references('id')
    ->on('users')
    ->noActionOnDelete();

参考你所选择的数据库的文档以了解它可能如何工作。


为软删除的模型悄悄地添加强制删除

Pascal Huberts 贡献了一个 forceDeleteQuietly() 方法,

在软删除的模型上强制进行硬删除而不引发任何事件:

$model->forceDeleteQuietly();

数组sortDesc()方法

Timur Fralik贡献了一个Arr::sortDesc()方法,该方法将一个数组按其值降序排序:

$sorted = Arr::sortDesc(['Desk', 'Table', 'Chair']);
 
// ['Table', 'Desk', 'Chair']


发布说明

你可以在GitHub上看到以下完整的新功能和更新列表以及9.48.0和9.49.0之间的差异。

下面的发行说明是直接来自于更新日志:

https://github.com/laravel/framework/compare/v9.48.0...v9.49.0
https://github.com/laravel/framework/blob/5273fac2a86f6aee84d60ae27e1edca9ff5b0d5f/CHANGELOG.md#v9490---2023-01-31


v9.49.0

新增

新增 Illuminate/Database/Schema/ForeignKeyDefinition::noActionOnDelete() (#45712)
为HTTP客户端添加了新的抛出帮助方法(#45704)。
为WorkCommand输出时间戳添加了可配置的时区支持(#45722)。
增加了对包含枚举的数组铸造的支持(#45621)。
增加了 "缺失 "验证规则(#45717)。
添加了/Illuminate/Database/Eloquent/SoftDeletes::forceDeleteQuietly() (#45737)
已添加 Illuminate/Collections/Arr::sortDesc() (#45761)
添加了CLI提示(#45629, #45864)。
为TestResponse添加了assertJsonIsArray和assertJsonIsObject (#45731)
增加Illuminate/Database/Eloquent/Relations/HasOneOrMany::createQuietly() (#45783)
添加验证规则:ascii_alpha、ascii_alpha_num、ascii_alpha_dash (#45769)
提取状态方法到特质(#45789)
为SoftDeletingScope添加 "addRestoreOrCreate "扩展 (#45754)
添加连接建立事件(f850d99)
为模型添加forceDeleting事件(#45836)
在邮件模板中添加标题标签(#45859)
为Collection添加新方法(#45839)
添加跳过取消的中间件(#45869)

修复了

修复PredisClusterConnection.php集群上的flushdb(#45544)
修复刀片标签的嵌套调用问题(#45764)。
修复刀片编译器的无限循环(#45780)。
修复ValidationValidator不接受终止换行的问题(#45790)
修复存根发布命令生成不正确的控制器存根(#45812)。
修复:规范化路由管道异常(#45817)
修复 Illuminate Filesystem replace() 留下可执行文件 (#45856)

已更改

确保通道名称从字符串的开头开始匹配 (#45692)
用对应的Unicode regex符号替换regex表达式中的原始不可见字符(#45680)
优化销毁方法(#45709)
围绕 prohibits_if 统一禁止行为 (#45723)
移除对 bcmath 的依赖(#45729)
也允许砖块/数学0.11(#45762)
优化 BelongsToMany 的 findMany (#45745)
确保小数点规则能处理大数值 (#45693)
支持@js的枚举 (#45862)
当工作者超时工作时,重新启动SIGALRM的系统调用(#45871)
确保对Mailable->to()的连续调用会覆盖之前的条目(#45885)


转:

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

  • 上一条:
    在Laravel应用程序如何减少代码重复编写
    下一条:
    js中动画事件:requestAnimationFrame、transitionend、animation...
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在Laravel项目中使用中间件方式统计用户在线时长功能代码示例(0个评论)
    • 在Laravel中构建业务流程模型(0个评论)
    • 在Laravel项目中的实现无密码认证之:发送邮箱链接授权(0个评论)
    • Laravel 10.4版本发布(0个评论)
    • 在laravel框架中的5个HTTP客户端技巧分享(0个评论)
    • 近期文章
    • 如何优雅处理async await错误推荐:await-to-js库(0个评论)
    • lodash工具库(0个评论)
    • 在Laravel项目中使用中间件方式统计用户在线时长功能代码示例(0个评论)
    • 在Laravel中构建业务流程模型(0个评论)
    • windows系统中安装FFMpeg及在phpstudy环境php7.3 + php-ffmpeg扩展的使用流程步骤(0个评论)
    • 在go语言中对浮点的数组、切片(slice)进行正向排序和反向排序(0个评论)
    • 在go语言中对整数数组、切片(slice)进行排序和反向排序(0个评论)
    • 在go语言中对字符串数组、切片(slice)进行排序和反向排序(0个评论)
    • 最新国内免注册ChatGPT体验站_ChatGPT镜像站访问链接地址2023/3/28持续更新(0个评论)
    • 在Laravel项目中的实现无密码认证之:发送邮箱链接授权(0个评论)
    • 近期评论
    • 博主 在

      2023年国务院办公厅春节放假通知:1月21日起休7天中评论 @ xiaoB 你只管努力,剩下的叫给天意;天若有情天亦老,..
    • xiaoB 在

      2023年国务院办公厅春节放假通知:1月21日起休7天中评论 会不会春节放假后又阳一次?..
    • BUG4 在

      你翻墙过吗?国内使用vpn翻墙可能会被网警抓,你需了解的事中评论 不是吧?..
    • 博主 在

      go语言+beego框架中获取get,post请求的所有参数中评论 @ t1  直接在router.go文件中配就ok..
    • Jade 在

      如何在MySQL查询中获得当月记录中评论 Dear zongscan.com team, We can skyroc..
    • 2016-10
    • 2016-11
    • 2017-07
    • 2017-08
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-09
    • 2020-10
    • 2020-11
    • 2021-01
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-04
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客