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

Laravel 9.4版本发布

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

Laravel 团队发布了 9.4,它具有覆盖 CSRF cookie、Str::lcfirst() 方法、队列邮件的可选重试机制等功能:

允许扩展 VerifyCsrfToken 的 CSRF cookie被继承

@jaggy 通过在应用程序的扩展 CSRF 中间件上定义一个 newCookie 方法,提供了覆盖 VerifyCsrfToken 的能力:

class VerifyCsrfToken extends Middleware {
    protected function newCookie($request, $config)
    {
        return new Cookie(
            "XSRF-TOKEN-{$request->user()->type}",
            $request->session()->token(),
            $this->availableAt(60 * $config['lifetime']),
            $config['path'],
            $config['domain'],
            $config['secure'],
            false,
            false,
            $config['same_site'] ?? null,
        );
    }
}

虽然大多数应用程序不需要覆盖默认行为,但 PR 作者提供了以下用例:

> 在多租户系统中的某些情况下,用户可能希望更改 CSRF 令牌名称以防止 419 错误。 
多个 Auth 提供者也主要在 XHR 请求中实现这一点。 
这也允许多租户系统从中间件层更新令牌的域(即拉取当前租户的自定义域)。

我认为这对使用 Inertia 的人有很大帮助,允许通过添加租户 ID 甚至用户类型来自定义 XSRF-TOKEN 的命名方式。


为查询构建器添加 soleValue 方法

Matthew Hailwood 提供了一个新的 soleValue() 方法来查询构建器以从唯一值而不是整个记录返回列:

// bails if there is not exactly one result,
// but returns an object
$query->sole(['id']);
 
// returns just the value, but no safety around
// there being exactly one result
$query->value('id');
 
// To get the ID, we must do
$query->sole(['id'])->id;

此更新允许以下用法:

// bails if there is not exactly one result,
// but returns an object
$query->sole(['id']);
 
// returns just the value, but no safety around
// there being exactly one result
$query->value('id');
 
// Bails if there is not exactly one result
// and returns just the value
$query->soleValue('id');


添加字符串 lcfirst() 方法

Vincent Prat 为 Str 和 Stringable 类贡献了一个 lcfirst() 方法,它也支持非 ASCII 字符:

> 今天我遇到了一个未运行的计划任务的问题。 
我花了一段时间才弄清楚事情的进展,主要是因为 schedule:list 没有显示任何异常,并且正在按预期更新“Next Due”时间戳。 
但是任务没有执行。 
长话短说,任务卡住了,因为互斥锁没有被清除,可能是因为计划外的服务器重启。


这是基于上述问题中概述的输出示例:

$php artisan schedule:list
+----------------------------------------------------------+-------------+--------------------+----------------------------+----------------------------+
| Command                                                  | Interval    | Description        | Next Due                   | Has Mutex                  |
+----------------------------------------------------------+-------------+--------------------+----------------------------+----------------------------+
| '/usr/bin/php8.0' 'artisan' mycommands:something         | */2 * * * * | Process something  | 2022-03-03 10:22:00 +00:00 | Yes                        |
| '/usr/bin/php8.0' 'artisan' mycommands:otherthing        | */2 * * * * | Process otherthing | 2022-03-03 10:22:00 +00:00 |                            |
+----------------------------------------------------------+-------------+--------------------+----------------------------+----------------------------+


支持修改 char 列类型

Hafez Divandari 贡献了修改 char 列类型的能力:

Schema::table('users',function(Blueprint $table) {
    $table->char('name',50)->nullable()->change();
});
> [The] 学说/dbal包实际上支持通过将固定选项设置为true来将char列类型修改为StringType::class。

所以这个PR,将Laravel char映射到它的Doctrine等效字符串类型,并将fixed选项设置为true,
最终得到SQL片段来声明一个CHAR列。


排队邮件的重试机制

MaxGiting 提供了为排队的邮件指定 retryUntil() 方法或 timeoutAt 属性的能力。

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


发行说明

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

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

https://github.com/laravel/framework/compare/v9.3.0...v9.4.0

https://github.com/laravel/framework/blob/246f05cefacdd33e5b28f38f1700fc593a6db9c7/CHANGELOG.md#v920-2022-02-22


v9.4.0

新增

支持修改 char 列类型 (#41320)
将“Mutex”列添加到“schedule:list”命令 (#41338)
允许 eloquent whereNot() 和 orWhereNot() 处理列和值 (#41296)
允许扩展 VerifyCsrfToken 的 CSRF cookie (#41342)
为查询构建器添加了 soleValue() (#41368)
将 lcfirst() 添加到 Str 和 Stringable (#41384)
为排队的邮件添加了 retryUntil 方法 (#41393)

修复

修复了用于身份验证会话的中间件排序 (50b46db)
修复 LazyCollection 的 takeUntilTimeout 方法 (#41354, #41370)
修复了可邮寄的嵌套 markdown 文件的目录 (#41366)
防止序列化排队作业的默认值 (#41348)
修复了 Illuminate/Http/Client/PendingRequest.php (a54f481) 中的 get() 和 head()

修改

不要使用全局 Tap 助手 (#41326)
允许链接 Illuminate/Console/Concerns/InteractsWithIO::newLine (#41327)
设置目的地,因为 Mail SesTransport (8ca43f4) 中的原始消息中缺少密件抄送

转:

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

  • 上一条:
    为什么敲了10000小时代码,我也没能成为一名高级程序员
    下一条:
    ElasticSearch报错:received plaintext http traffic on an https channel
  • 昵称:

    邮箱:

    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个评论)
    • 近期文章
    • 智能合约Solidity学习CryptoZombie二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(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个评论)
    • 近期评论
    • 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交流群

    侯体宗的博客