Laravel 6.2 中添加了可调用容器对象

2019-10-22  本文已影响0人  summerbluet
image

文章转发自专业的Laravel开发者社区,原始链接:https://learnku.com/laravel/t/35306

Laravel小组上周发布了v6.2.0 ,其中包含 针对已登录用户的新的密码确认流程以及可调用的容器对象。现在,让我们去了解一些尚未发布的一些其他新功能,在发行说明中表示已经可以使用:

首先,Container::call 现在支持可调用对象。下面是pull请求的测试,它演示了它的工作原理:

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
{
    /**
     * 获取用户未通过身份验证时应重定向到的路径。
     *
     * @param  \Illuminate\Http\Request  $request
     * @return string
     */
    protected function redirectTo($request)
    {
        if (! $request->expectsJson()) {
            return route('login');
        }
    }

    protected function unauthenticated($request, array $guards)
    {
        // 自定义未经验证的逻辑
    }
}

接下来, 在测试套件中添加了一个新的便捷的 partialMock() 方法:

// 之前
$this->instance(Abstract::class, Mockery::mock(Abstract::class, function ($mock) {
    $mock->shouldReceive('call')->once();
})->makePartial());

// 之后
$this->partialMock(Abstract::class, function ($mock) {
    $mock->shouldReceive('call')->once();
});

您可以在下面查看新功能和更新的完整列表,以及github上 6.1.0 and 6.2.0 之间的全部区别。当然你也可以在 GitHub v6 changelog上查看Laravel 6.0的完整发行说明:

v6.2.0

新增

更新

既定

上一篇下一篇

猜你喜欢

热点阅读