Laravel 8.38, weekly updates, and 🔥 tip

Laravel 8.38

This week we have a few fixes and additions. So we increment to the next minor release of 8.38.0. Here are the highlights:

  • Fix required_if boolean validation in #36969
  • Fix merging object payload data in #36998
  • Fix anonymous and class based migration coexisting in #37006
  • Fix Http::withBody not being sent in #37057
  • Rename actingAs/be parameter in #36982
  • Add a Str::wordCount helper in #36990
  • Add PusherBroadcaster::setPusher in #37033
  • Allow the use of temporary views for testing Blade on Windows in #37044

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 I finished the Human Shifts and implemented some tweaks from using Shift myself. As I've said many times now, whenever I do Human Shifts it allows me to become a user. So anytime I find ways in which I might improve the automation, I go back and update the respective Shift.

Jess and I also finished the upgrade to Tailwind 2.x. Of course, we also used this as an opportunity to dogfood the new Tailwind Shifts. Although we took time to do a thorough visual review, there were only two main areas we needed to make changes.

Of course one of which was the colors. Tailwind has changed its color palette in every version. And because we were using Tailwind UI, there were some additional customizations. In the end, we actually followed Shift's recommendation of adopting the new colors, particularly the teal which gave the site a more Miami Vice feel.

The other was related to line heights. These are now defaulted by the text size utilities. So if you were setting line height explicitly, you potentially need to also set it for any of the responsive text sizes. Making this change manually gave me a better understanding of this, so I went back and wrote some automation for this.

This week I will continue to work on the secret project. I made some progress over the weekend, but came to the conclusion it would be easier to adopt Vue than continuing to write JavaScript rendering code. I often put off using these technologies from my tendency to practice YAGNI. However, finally time to use Vue in a project.

🔥 Tip

I recently upgrade all of Shift's stack to PHP 8. In doing so, I was reminded of the new match expression available in PHP 8. I really like how this expression streamlines the code. Particularly when there are multiple cases or return paths.

Here's a switch statement:

1switch ($statusCode) {
2 case 200:
3 case 300:
4 $message = null;
5 break;
6 case 400:
7 $message = 'not found';
8 break;
9 case 500:
10 $message = 'server error';
11 break;
12 default:
13 $message = 'unknown status code';
14 break;
15}

And the corresponding match expression:

1$message = match ($statusCode) {
2 200, 300 => null,
3 400 => 'not found',
4 500 => 'server error',
5 default => 'unknown status code',
6};

That's pretty 🔥. If you want to learn more about the match expression, check out this full comparison on Sticher.io.