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

Laravel 9.12版本发布

Laravel  /  管理员 发布于 3年前   815

Laravel团队发布了9.12版本,其中包含延迟每个通道的通知、跨通道共享日志上下文、在测试时防止杂散的 HTTP 请求等等:


基于闭包的异常测试

Karel Faille 贡献了 assertThrows() 方法,使用闭包测试异常处理的方法:

// 确保抛出异常
$this->assertThrows(fn () => throw Exception(''));
// 确保抛出特定类型的异常
$this->assertThrows(
    fn () => (new SomeActionThatThrowsExceptions)->execute(),
    CustomException::class
);
// 确保抛出带有特定消息的异常
$this->assertThrows(fn () => throw Exception('My message'), Exception::class, 'My message');


强制在测试中伪造HTTP请求

Tim MacDonald 贡献了使用 Laravel 的 HTTP 客户端强制伪造所有 HTTP 请求。

如果测试中没有伪造 HTTP 请求,则测试将抛出异常:

protected function setUp(): void
{
    parent::setUp();
    Http::preventStrayRequests();
}
public function testItDoesTheThingWithoutFaking(): void
{
    $this->post('endpoint-that-utilises-the-http-facade');
   // RuntimeException:在没有匹配伪造的情况下尝试向 [https://acme.com] 请求。
   /* ... */
}


"Throw IF"HTTP客户端方法

@denniseilander为HTTP客户端贡献了一个 throwIf() 方法,如果条件为 true 则抛出异常:

// 抛出 RequestException 异常
return Http::baseUrl('https://foo.bar')
       ->throwIf(true)
       ->get('not-found');
// 不抛出
return Http::baseUrl('https://foo.bar')
       ->throwIf(false)
       ->get('not-found');


允许将 Key/Value数组传递给Artisan选项和参数

Jesper Noordsij将key/value数组传递给Artisan命令上的getArguments和getOptions为了稍微简单的接口。

// 此外,可以跳过你不想使用的那些,而不是 providing/copying 默认值
// 例如:
public function getArguments()
{
    return [
        ['name' => 'argument', 'default' => 'default']
    ];
    // which previously would have been...
    // return [
    //     ['argument', null, '', 'default']
    // ];

请参见 Pull Request #42268 了解更多详情。


更多新的条件方法

Patrick O'Meara 贡献了 whereMorphedTo 和 orWhereMorphedTo 方法。

以下是一个来自 PR 测试的例子:

$model = new EloquentBuilderTestModelParentStub;
$this->mockConnectionForModel($model, '');
$relatedModel = new EloquentBuilderTestModelCloseRelatedStub;
$relatedModel->id = 1;
$builder = $model->whereNotMorphedTo('morph', $relatedModel);
$this->assertSame('select * from "eloquent_builder_test_model_parent_stubs" where not ("morph_type" = ? and "morph_id" = ?)', $builder->toSql());
$this->assertEquals([$relatedModel->getMorphClass(), $relatedModel->getKey()], $builder->getBindings());

查看 Pull Request #42264 了解更多详情。


跨通道和堆栈共享日志上下文

Tim MacDonald 贡献了跨所有日志通道共享上下文信息:

// In a service provider...
public function boot()
{
    Log::shareContext([
        'invocation-id' => (string) Str::uuid(),
    ]);
}


每个通道延迟通知

你可以向延迟方法传递一个数组,以指定特定通道的延迟量:

$user->notify((new InvoicePaid($invoice))->delay([
    'mail' => now()->addMinutes(5),
    'sms' => now()->addMinutes(10),
]));

你也可以在 notification 类中定义一个 withDelay 方法:

/**
 * Determine the notification's delivery delay.
 *
 * @param  mixed  $notifiable
 * @return array
 */
public function withDelay($notifiable)
{
    return [
        'mail' => now()->addMinutes(5),
        'sms' => now()->addMinutes(10),
    ];
}


发行说明

你可以在下面看到新的功能和更新,以及在 GitHub 看 9.11.0 和 9.12.0 之间的差异。以下发行说明直接来自 changelog:

https://github.com/laravel/framework/compare/v9.11.0...v9.12.0
https://github.com/laravel/framework/blob/25127ba88d9a5419ea7a3e99829284e21f7194f2/CHANGELOG.md#v9120---2022-05-10

v9.12.0

新增

新增基于闭包的异常测试 (#42155)
允许通过强制 Http 客户端发出的请求被伪造 (#42230)
新增 'throwIf' 方法到 PendingRequest (#42260)
允许传递 key/value 数组给 getArguments 和 getOptions 方法 (#42268)
新增 whereNotMorphedTo, orWhereNotMorphedTo (#42264)
新增扩展本地数组生成方法 (#42275)
新增基于应通知实例 (#42239)
新增 Illuminate/Pagination/CursorPaginator::onLastPage () (#42301)
新增 findOr 方法到 Query/Builder (#42290)

已修复

修复推送式广播频道过多的问题 (#42287)
修复 Str::Mask () 用于重复字符 (#42295)
修复 EventFake::assertListening () 用于断言基于字符串的观察者侦听器 (#42289)
修复松散比较导致值无法保存的问题 (#41337)
修复 Digits_between 规则的多个点 (#42330)

已更改

启用在使用 beforeSending () 回调时修改 HTTP 客户端请求头 (#42244)
使限制锁获取重试可配置为并发限制器 (#42242)
推迟工厂可调用的扩展 (#42241)
添加 wherehas 软删除作用域 (#42100)
改进密码检查 (#42248)
当使用 forceCreate 在 HasOne 和 HasMany 关系时设置父关系关联的 key (#42281)
确保 phpredis 和 predis 驱动程序之间的前缀覆盖行为相同 (#42279)
跨通道和堆栈共享日志上下文 (#42276)

转:

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

  • 上一条:
    go语言中实现把数据写入文件函数WriteFile()编写
    下一条:
    Laravel角色和权限:拦截器Gates和策略Policies的解释
  • 昵称:

    邮箱:

    1条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论)
    • Laravel 11.14版本发布 - 新的字符串助手和ServeCommand改进(0个评论)
    • Laravel 11.12版本发布 - Artisan的`make`命令自动剪切`.php `扩展(0个评论)
    • Laravel的轻量型购物车扩展包:binafy/laravel-cart(0个评论)
    • Laravel 11.11版本发布 - 查看模型中的第三方关系:show(0个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 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
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    • 2024-05
    • 2024-06
    • 2024-07
    Top

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

    侯体宗的博客