News

Callable Container Objects Added to Laravel 6.2

Published
Callable Container Objects Added to Laravel 6.2 image

Release updates

Never miss a Laravel release

Get an email whenever a new Laravel release lands.

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() handle image/svg MIME (#30204)
Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Sponsored

masteringlaravel logo
Laravel Code Review

Get expert guidance in a few days with a Laravel code review

Visit Laravel Code Review

The latest

View all →
Laravel Rulebook: Business Rules That Change by Date image

Laravel Rulebook: Business Rules That Change by Date

Read article
Taylor disabled GitHub Issues on most Laravel open-source packages. image

Taylor disabled GitHub Issues on most Laravel open-source packages.

Read article
Exclude Vendor and Default Commands in `php artisan dev` image

Exclude Vendor and Default Commands in `php artisan dev`

Read article
The Laracon Archive image

The Laracon Archive

Read article
Group Adjacent Collection Items in Laravel with chunkBy() image

Group Adjacent Collection Items in Laravel with chunkBy()

Read article
Laravel queue:work Now Prints Why the Worker Stopped image

Laravel queue:work Now Prints Why the Worker Stopped

Read article