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

Laravel 10.13版本发布

Laravel  /  管理员 发布于 4个月前   193

本周, 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)
    • 相关文章
    • 使用 Unfinalize 删除供应商软件包中类和方法的 "final "关键字(0个评论)
    • 适用于 Laravel 的表单请求测试程序包(0个评论)
    • Laravel 10.25版本发布(0个评论)
    • Laravel 11版本抢先看,看将有什么新功能发布(0个评论)
    • Laravel框架中适用于Eloquent的日期过滤软件包:lara-date-filter(0个评论)
    • 近期文章
    • 在go语言中计算相对强弱指数(RSI)示例代码(0个评论)
    • 在go语言中实现查找相关系数示例代码(0个评论)
    • 使用 Unfinalize 删除供应商软件包中类和方法的 "final "关键字(0个评论)
    • zongscan.com祝各位老铁2023中秋国庆假期快乐!(0个评论)
    • 在go语言中如何解析WSDL并调用对应的第三方接口(0个评论)
    • 使用cert Manager申请免费证书流程步骤(0个评论)
    • 在Nuxt3中如何减少import model声明及初始化加载models快速开发秘诀(0个评论)
    • 适用于 Laravel 的表单请求测试程序包(0个评论)
    • Laravel 10.25版本发布(0个评论)
    • 在go语言中实现生成文件的校验和功能代码示例(0个评论)
    • 近期评论
    • 路人 在

      php中使用hyperf框架调用讯飞星火大模型实现国内版chatgpt功能示例中评论 教程很详细,如果加个前端chatgpt对话页面就完美了..
    • 博主 在

      科学上网翻墙之v2rayN-Core客户端免费公益节点使用教程中评论 @ mashrdn 多切换几个节点测试,免费ssr是没那么稳..
    • mashrdn 在

      科学上网翻墙之v2rayN-Core客户端免费公益节点使用教程中评论 V2rayn免费节点添加上去了,youtobe无法打开网页,是怎么回事..
    • 张伟 在

      科学上网翻墙之v2rayN-Core客户端免费公益节点使用教程中评论 3q!有用,不过免费节点隔天就要去git上复制新的导进去..
    • 博主 在

      科学上网翻墙访问Google , 上外网神器佛跳墙VPN(永久免费)使用流程步骤中评论 该篇教程已不能用了,告知大家,免的老有老铁问我!..
    • 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
    Top

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

    侯体宗的博客