Laravel 开发团队昨天发布了 v6.10
版本,本次版本发布包含 11 个新特性以及大量的问题修复、功能废弃和代码优化,另外,还引入了对 PHPUnit 9 的支持。
下面,我们一起来看下几个重要的新特性:
在新版本中,可以通过 withoutMix()
和 withMix()
测试辅助函数启用或禁用异常处理:
// 之前这么实现
$this->swap(\Illuminate\Foundation\Mix::class, function () {
return '';
});
// 现在这么实现
$this->withoutMix();
新增请求验证宏方法
在 Request 请求类中新增了 validateWithBag
宏方法,用于在验证请求参数时指定错误包:
$request->validateWithBag('blog', [
'title' => ['required', 'unique:posts', 'max:255'],
'body' => ['required'],
]);
Laravel 6 官方文档也已经体现了这一更新:https://xueyuanjun.com/post/19936。
从 v6.10
开始,Laravel 开始支持 PHPUnit 9,可以通过完整的 pull request 查看实现细节:https://github.com/laravel/framework/pull/30947。
至于为什么要引入 PHPUnit 9,主要原因是 PHP 8.0、8.1、8.2 或者 8.3 中将很有可能不再支持 PHPUnit 8,而 Laravel 6 是 LTS 版本,我们希望它可以支持最新版本的 PHP,所以需要能够运行最新版本的 PHPUnit。
和 Laravel 框架中其他支持 macro
方法的类一样,现在可以在 Redis Connection 上调用 macro
定义宏方法:
use Illuminate\Redis\Connections\Connection;
Connection::macro('foo', function () {
return 'foo';
});
以上只是几个重要的更新,完整的更新日志可以在这里查看:https://github.com/laravel/framework/blob/6b9232037f8041c298b6479ef4ffd70d78d61a27/CHANGELOG-6.x.md#v6100-2020-01-07,此外,你还可以在 Github 上对比 6.9.0 和 6.10.0 版本的差异:https://github.com/laravel/framework/compare/v6.9.0...v6.10.0。
withoutMix()
和 withMix()
测试辅助函数validateWithBag()
宏方法到 Request 类exclude_if
和 exclude_unless
验证规则mixin
支持PackageManifest::config()
方法redis.connection
别名Illuminate\Console\Command
中分离出 CallsCommands
功能Storage::putFile()
中使用绝对文件路径@slot
ThrottleRequestsException
继承 TooManyRequestsHttpException
league/commonmark
扩展包取代 erusev/parsedown
graham-campbell/testbench-core
扩展包的依赖Faker\Generator
Blueprint
中 float
数据库字段类型getenv()
的代码exclude_if
/exclude_unless
验证规则dev-master
分支别名从 6.0-dev
修改为 6.x-dev
runningInConsole
方法PendingMail::sendNow()
并移除不必要的检查TransactionCommitted
事件不包含我期望的事物级别BladeCompiler::compileString()
方法声明:本文翻译整理自 Laravel News