Laravel 7.4 发布
laravel 团队昨天发布了 v7.4.0 版本,其中包含相当多的新特性,例如自定义的模型转换器接口、 when 高阶集合代理,以及从查询构建器中清除现有 order 的功能。
高阶的 when 集合代理
loris leiva 贡献了使用高阶代理的能力,它的方法是 collection::when()
// pr 中的相关代码
$collection->when($condition, function ($collection) use ($item) {
$collection->push($item);
});
// 现在重构为
$collection->when($condition)->push($item);
此 pr 使您能够链接其他高阶代理方法:
// 以前
$collection->when($condition, function ($collection) {
$collection->map->parseintosomething();
});
// 现在重构为
$collection->when($condition)->map->parseintosomething();
对于 artisan 命令行增加 expectschoice () 进行选择
adrian nürnberger 提供了一个控制台测试方法,用于在命令行中询问你的选择。
就像下面这样:
$name = $this->choice('what is your name?', ['taylor', 'dayle'], $defaultindex);
之前你只能断言此问题的回复,不能测试选择:
$this->artisan('question')
->expectsquestion('what is your name?', 'taylor')
->assertexitcode(0);
在 laravel7.4,你可以给出选项,像下面这样做:
$this->artisan('question')
->expectschoice('what is your name?', 'taylor', ['taylor', 'dayle'])
->assertexitcode(0);
你还可以在第四个参数传入一个 boolean 类型的值,用来保证选择顺序
$this->artisan('question')
->expectschoice('what is your name?', 'taylor', ['taylor', 'dayle'], true)
->assertexitcode(0);
为 blade 的 @props 标签添加默认值
@props 拥有了自定义默认值的能力
<!-- 以前的版本: -->
@props(['type', 'message'])
@php
$type = $type ?? 'info'
@endphp
<!-- laravel >=7.4 -->
@props(['type' => 'info', 'message'])
castable 接口
brent roose 贡献了一个 castable 接口,允许 castable
类型指定其基础类:
// 以前
class modelx extends model
{
protected $casts = [
'data' => casttodto::class . ':' . mydto::class,
];
}
// 现在
class modely extends model
{
protected $casts = [
'data' => mydto::class,
];
}
// 基础类
use illuminate\contracts\database\eloquent\castable;
class mydto implements castable
{
public static function castusing()
{
return casttodto::class . ':' . static::class;
}
}
从查询构建器中删除 order
jonathan reinink 为查询构建器贡献了一个 reorder()
方法,用于重置其 orderby()
:
$query = db::table('users')->orderby('name');
$unorderedusers = $query->reorder()->get();
重新排序允许您在雄辩的关系中定义默认顺序,并能够在需要时取消:.
class account extends model
{
public function users()
{
return $this->hasmany(user::class)->orderby('name');
}
}
// 删除名称 orderby 和 order by email
$account->users()->reorder()->orderby('email');
// 同样可以写成:
$account->users()->reorder('email');
发行说明
您可以在下面看到新功能和更新的完整列表以及在 github 上看到 [7.3.0 和 7.4.0] 之间的区别(https://github.com/laravel/framework/compa...)
v7.4.0
添加内容
- 可自定义 make:policy 的存档位置 (#32040, 9d36a36)
- 为集合添加 higherorderwhenproxy (#32148)
- 添加了 illuminate\testing\pendingcommand::expectschoice() (#32139)
- 添加了对于 blade 中 “props” 标记的支持 (#32177)
- 添加了 castable 接口 (#32129, 9cbf908, 651371a)
- 增加了从查询生成器中删除订单的功能 (#32186)
修复
- 在 pendingmailfake::sendnow() 和 pendingmailfake::send() (#32093) 中添加了缺少的返回值
- 修复了自定义模型属性转换 (#32118)
- 修复了路由组前缀 (#32135, 870efef)
- 修复固定组件类视图引用 (#32132)
相关更改
- 删除 swift 邮件绑定程序 (#32165)
- 当运行 stub:publish 命令时发布 console stub (#32096)
- 当运行 make:rule 命令时发布 rule stub (#32097)
- 将 midleware.stub 添加到运行 php artisan stub:publish 时发布的文件中 (#32099)
- 将 factory.stub 添加到运行 php artisan stub:publish 时发布的文件中 (#32100)
- 将 eneder.stub 添加到运行 php artisan stub:publish 时发布的文件中 (#32122)
更多学习内容请访问:
八重樱:腾讯t3-t4标准精品php架构师教程目录大全,只要你看完保证薪资上升一个台阶(持续更新)
上一篇: [php第一课]php简介
下一篇: Promise入门详解和基本用法
推荐阅读
-
华硕ROG 发布手机:鸡血版 845,这可能是最「惊艳」的游戏手机
-
iOS中使用Fastlane实现自动化打包和发布
-
spring boot打jar包发布的方法
-
人工智能?下一届苹果发布会看点猜想
-
军事类、*类院校,4月起将陆续发布报名通知,附往年分数线
-
Eclipse配置tomcat发布路径的问题wtpwebapps解决办法
-
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
-
Laravel框架运行出错提示RuntimeException No application encryption key has been specified.解决方法
-
Laravel路由研究之domain解决多域名问题的方法示例
-
Laravel5.7框架安装与使用学习笔记图文详解