Laravel 6.2 新增可调用容器对象
发布日期:作者: Paul Redmond
Laravel 团队上周发布了 v6.2.0 版本,其中包含了 登录用户的新密码确认流程 和可调用容器对象。现在发布说明已发布,让我们来看看我们尚未介绍的其他一些新功能。
首先,Container::call
现在支持可调用对象。以下是来自拉取请求的测试,演示了它的工作原理。
class ContainerCallCallableStub{ public function __invoke(ContainerCallConcreteStub $stub, $default = 'jeffrey') { return func_get_args(); }} $container = new Container;$callable = new ContainerCallCallableStub;$result = $container->call($callable);$this->assertInstanceOf(ContainerCallConcreteStub::class, $result[0]);$this->assertSame('jeffrey', $result[1]);
接下来,框架身份验证中间件添加了一个 unauthenticated
方法。每个 Laravel 项目都有一个扩展框架中间件的 Authenticate
中间件类,使您可以覆盖 unauthenticated
的行为。
class Authenticate extends Middleware{ /** * Get the path the user should be redirected to when they are not authenticated. * * @param \Illuminate\Http\Request $request * @return string */ protected function redirectTo($request) { if (! $request->expectsJson()) { return route('login'); } } protected function unauthenticated($request, array $guards) { // Custom unauthenticated logic }}
接下来,在测试套件中添加了一个新的 partialMock()
方便方法。
// Before$this->instance(Abstract::class, Mockery::mock(Abstract::class, function ($mock) { $mock->shouldReceive('call')->once();})->makePartial()); // After$this->partialMock(Abstract::class, function ($mock) { $mock->shouldReceive('call')->once();});
您可以在下面查看所有新功能和更新的完整列表,以及 6.1.0 和 6.2.0 之间的完整差异。Laravel 6.0 的完整发布说明在 GitHub 的 v6 更改日志 中提供。
v6.2.0
新增
- 在
Container::call()
中添加对可调用对象的支持 (#30156) - 为 PostgreSQL 添加 multipolygonz 类型 (#30173)
- 在身份验证中间件中添加 “unauthenticated” 方法 (#30177)
- 添加 partialMock 简写 (#30202)
- 允许 Storage::put 接受 Psr StreamInterface (#30179)
- 实现新的密码规则和密码确认 (#30214)
更改
- 删除传递给 updatePackageArray 方法的非必需参数 (#30155)
- 向 DatabaseUserProvider 添加可选连接名称 (#30154)
- 删除 URL php artisan serve 周围的括号 (#30168)
- 将限制应用于数据库而不是集合 (#30148)
- 允许在嵌套查询中使用作用域宏 (#30127)
- 为 sqlite 添加数组到 json 的转换 (#30133)
- 使用
policies()
方法而不是 policies 属性 (#30189) - 拆分 hasValidSignature 方法 (#30208)
修复
-
validateDimensions()
处理image/svg
MIME (#30204)