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

Laravel 10.13版本发布

Laravel  /  管理员 发布于 2年前   478

本周, Laravel团队发布了v10.13,在语法中加入了数据库转义功能,睡眠测试钩子,响应准备事件,以及更多:

Hash isHashed()方法

Günther Debrauwer贡献了一个isHashed()方法, 封装了本地的password_get_info()调用, 

它可以确定一个字符串是否已经被哈希化:

Hash::isHashed($value); // bool

这意味着这个方法可以被模拟,并且没有被锁定在password_get_info()函数的调用上以确定散列。


语法中的逃逸功能

Tobias Petry之前贡献了具有语法特定格式的数据库表达式,现在又在语法类中加入了转义功能:

> 为了解决这个问题,我提出了一个解决方案,
增加对数据库语法的支持,以转义任何值,安全地嵌入到SQL查询中。
PHP通过PDO::quote方法原生提供了这个功能。

单个连接实例(即PostgresConnection)实现了数据库特定的转义,

这意味着你不必使用原始的特定驱动程序查询来转义数值:

// Taken from the Postgres escaping tests

$this->assertSame(
    "'\\xdead00beef'::bytea",
    $this->app['db']->escape(hex2bin('dead00beef'), true)
);
 
$this->assertSame(
    '3.14159',
    $this->app['db']->escape(3.14159)
);
 
$this->assertSame(
    '-3.14159',
    $this->app['db']->escape(-3.14159)
);
 
$this->assertSame(
    "'Hello''World'",
    $this->app['db']->escape("Hello'World")
);

请查看Pull Request #46558,了解完整的细节、实现和围绕这些概念的讨论。


提供睡眠测试钩子

Tim MacDonald 贡献了注册回调的能力,以便在测试中睡眠时执行:

// Implementation example from the PR:
$timeout = now()->addMinute();
 
do {
    if (Work:attempt()) {
        return;
    }
 
    Sleep::for(100)->milliseconds();
} while (now()->isAfter($timeout));
 
// Test code
$this->freezeTime();
Sleep::fake();
Sleep::whenFakingSleep(fn (Interval $duration) => $this->travel(
    $duration->totalMilliseconds
)->milliseconds());
 
// run test code.
 
Sleep::assertSlept();

有效地,我们可以进步now()值,以确保我们的实现是按预期工作的。更多细节请参见Pull Request #47228。


额外的状态代码断言

Volodya Kurshudyan 贡献了一些状态代码断言的便利性,它们是直接断言状态代码的替代品:

$response->assertNotModified();
$response->assertTemporaryRedirect();
$response->assertPermanentRedirect();
$response->assertNotAcceptable();

这些方便的方法在 "这是否应该在框架中出现?"方面可能会有争议。

你可以不使用它们,而使用$response->assertStatus(308)代替。


在事件中包装响应准备

Tim MacDonald贡献了新的响应事件,以挖掘准备和准备好响应之后的时刻。这允许一些有趣的能力,

比如在PreparingResponse和ResponsePrepared事件之间记录查询。

如下图所示,如果在PreparingResponse期间有任何查询被执行,

你可以抛出一个异常,或者在生产中把它们记录出来:

$logQueries = false;
 
Event::listen(PreparingResponse::class, function () use (&$logQueries) {
    $logQueries = true;
});
 
Event::listen(ResponsePrepared::class, function () use (&$logQueries) {
    $logQueries = false;
});
 
DB::listen(function (QueryExecuted $event) use (&$logQueries) {
    if ($logQueries) {
        // log in production, throw locally.
    }
});

参见Pull Request #45603,以了解这些事件背后的想法的更多细节,如在响应准备期间防止查询,视图渲染等。


发布说明

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

下面的发布说明直接来自更新日志:

https://github.com/laravel/framework/compare/v10.12.0...v10.13.0
https://github.com/laravel/framework/blob/693e0c790ed61f78ac75cb1445df8362f6606a3c/CHANGELOG.md#v10130-2023-05-30


v10.13.0

新增

新增 Illuminate/Hashing/HashManager::isHashed() (#47197)
语法中的逃逸功能(#46558)
在 Illuminate/Support/Sleep.php 中提供测试钩子 (#47228)
为AssertsStatusCodes添加缺失的方法(#47277)
在事件中包裹响应准备 (#47229)

修正了

修正了函数包裹相关工厂定义时的错误 (#47168)
修复了报告和渲染方法之间的不一致(#47201)
修正了Model::isDirty()在AsCollection或AsEncryptedCollection有参数时的问题 (#47235)
修正了JSON_CONTAINS的转义字符串(#47244)
修复了ProcessFailedException异常的输出缺失(#47285)。

已更改

删除无用的else语句(#47186)
RedisStore的改进--除非所有的值都是可序列化的,否则不打开事务(#47193)
使用 carbon::now() 在 takeUntilTimeout lazycollection-method 中获取当前时间戳 (#47200)
合并时避免可见/隐藏的重复(#47264)
在CompilesClasses中添加一个缺失的分号(#47280)
向InvalidPayloadException发送沿用值(#47223)


转:

https://laravel-news.com/laravel-10-13-0

  • 上一条:
    在github创建task的同时创建分支流程步骤
    下一条:
    在go语言中实现一个函数来检查用户代理是否是机器人或爬虫的示例
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • 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交流群

    侯体宗的博客