Callable Container Objects Added to Laravel 6.2
Published on by Paul Redmond
The Laravel team released v6.2.0 last week with a New Password Confirmation Flow for Logged In Users, and callable container objects. Let’s go over some of the other new features we haven’t covered yet, now that the release notes are available:
First, Container::call
now supports callable objects. Here’s the test from the pull request, which demonstrates how it works:
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]);
Next, the framework Authenticate middleware adds an unauthenticated
method. Each Laravel project has an Authenticate
middleware class that extends the framework middleware, enabling you to override the unauthenticated
behavior:
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 }}
Next, a new partialMock()
convenience method was added to test suite:
// 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();});
You can see the full list of new features and updates below, and the whole diff between 6.1.0 and 6.2.0 on GitHub. The full release notes for Laravel 6.0 are available in the GitHub v6 changelog:
v6.2.0
Added
- Added support for callable objects in
Container::call()
(#30156) - Add multipolygonz type for postgreSQL (#30173)
- Add “unauthenticated” method in auth middleware (#30177)
- Add partialMock shorthand (#30202)
- Allow Storage::put to accept a Psr StreamInterface (#30179)
- Implement new password rule and password confirmation (#30214)
Changed
- Remove unnecessary param passed to updatePackageArray method (#30155)
- Add optional connection name to DatabaseUserProvider (#30154)
- Remove brackets arround URL php artisan serve (#30168)
- Apply limit to database rather than collection (#30148)
- Allow to use scoped macro in nested queries (#30127)
- Added array to json conversion for sqlite (#30133)
- Use the
policies()
method instead of the property policies (#30189) - Split hasValidSignature method (#30208)
Fixed
-
validateDimensions()
handleimage/svg
MIME (#30204)