The Laravel team released v5.8.28 yesterday with new collection methods for merge and replacement, and the Tappable
trait on TestResponse
.
Before we get to the new collection methods, the TestResponse
class is now tappable, which provides a different way of making assertions on the test response:
// With tap$this->getJson('/api/users/index') ->assertStatus(200) ->tap(function (TestResponse $response) { $this->assertMatchesJsonSnapshot($response); }); // Without tap$response = $this->getJson('/api/users/index') ->assertStatus(200); $this->assertMatchesJsonSnapshot($response);
Next, a few new collection methods were added, including mergeRecursive()
, replace()
, and replaceRecursive()
.
The mergeRecursive()
method implements the basic PHP array_merge_recursive
behavior on a collection.
Next, the replace()
and replaceRecursive()
methods, which implements the basic array_replace
and array_replace_recursive
on collections respectively. Here’s an example from the test cases which might illustrate how these methods work:
$c = new Collection(['a', 'b', 'c']);$this->assertEquals( ['a', 'd', 'e'], $c->replace([1 => 'd', 2 => 'e'])->all());
Last, a new session only()
method was added to specify and only retrieve certain session keys:
$session->only(['example1', 'example2']);
You can see the whole diff between 5.8.27 and 5.8.28 on GitHub. The full release notes for Laravel 5.8 are available in the GitHub 5.8 changelog :
v5.8.28
Added
- Make TestResponse tappable (#29033)
- Added
Support\Collection::mergeRecursive()
method (#29084) - Added
Support\Collection::replace()
andSupport\Collection::replaceRecursive()
methods (#29088) - Added
Session\Store::only()
method (#29107)
Fixed
- Fixed cache repository setMultiple with an iterator (#29039)
- Fixed cache repository getMultiple implementation (#29047)
Reverted
Changed
- Fail job immediately after it timeouts if it won’t be retried (#29024)