Laravel 8.30, weekly updates, and 🔥 tip

Laravel 8.30

Lots of new features this week pushing us to 8.30.0. Here are the highlights:

  • Make Database Factory macroable in #36380
  • Respect custom route key with explicit route model binding in #36375
  • Add perMinutes for RateLimiting in #36352
  • Add buffered Console output in #36404
  • Add stopOnFirstFailure for validation in 39e1f84a
  • Add containsOneItem to Collection in #36428
  • Add context method within custom Exception in #36424

You may review the full branch diff on GitHub for a complete list of changes.

This minor version bump and update is automated for subscribers to a Shifty Plan. If you don't have one of those, be sure to bump your constraint and run composer update to get the latest features.

Weekly Journal

Last week Jess and I continued working on the new Tailwind Shifts. After a few alpha tests I realized some additional ways the Tailwind utilities may be used. So I spent most Friday building a parser for these edge cases. There's a few more to go, but it's a lot better and encapsulates this logic so it's easy to tweak.

We also need to finalize changes to the config file. Tailwind is a little different in regard to upgrading configuration. Particularly around the color palette. However, I want to align with the primary goal of Shift. So we're going to upgrade the configuration by default, but allow it to be an optional change. There will also be PR comments with any customizations you used so you may quickly copy and paste them back into your upgraded config file.

Jess and I also recorded a new episode of the BaseCode podcast, release this morning, starting our 5th season. We'll get deeper into the technical topics as this season progresses. This first one is mostly us catching up over the last six months.

Monday I bumped the prices for the Laravel 5.6, 5.7, and 5.8 Shifts. These now align with the $29 pricing tier, which represent unsupported versions of the framework.

I also updated the Shifty Plans. Anyone with an existing plan will be grandfathered into the comparable new plan at their next billing cycle. These plans are mostly the same, with the exception of the Upgrade Plan which now starts with the Laravel 6.x Shift as the latest LTS version.

I also changed the names to hopefully clarify their intent. The CI Plan was renamed to the Latest Plan, and the Upgrade Plan was renamed to the LTS Plan.

To fill any gap, I also created an Everything Plan. It's pretty straightforward - run any Shift for any repo. This is an annual plan as it's targeted at teams who manage multiple applications across various versions.

🔥 Tip

Array destructuring has been around since PHP 7.1. The obvious use case is replacing list or destructuring the returned array from explode.

However, a tweet from Nuno Maduro reminded me of another use case when assigning foreach loop variables.

Here is an example I used for testing the new Shifty Plans upgrade path where I unpack the two elements within a nested array to use within a foreach loop:

1foreach ($this->planCombinations() as [$current, $new, $expected]) {
2 $plan = Plan::factory()->make([
3 'name' => $current,
4 ]);
6 $this->assertSame($expected, $plan->isUpgrading($new));