Laravel 9.1, weekly updates, and 🔥 tip
Laravel 9.1
Lots of fixes in this week's release of Laravel 9.1 given the major release last Tuesday. However, I'm going to focus on the new features added.
- Add
@disabled
Blade directive in #40900 - Allows TLS encryption to use a different port in #40943
- Catch suppressed deprecation logs in #40942
- Add support for passing array for
Route::group
in #40945 - Put the error message at the bottom of the exceptions in #40886
- Add
firstOr()
toBelongsToMany
relation in #40828 - Ability to use
uniqueFor
in jobs in #40974 - Add filtering of
route:list
by domain in #40970 - Add
dropForeignIdFor
migration method in #40950 - Add
Str::excerpt
in #41000 - Add
make:model --morph
to generateMorphPivot
model in #41011
You may review the full branch diff on GitHub for a complete list of changes.
This 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 was incredibly busy. Not only was the release of Laravel 9 on Tuesday, but Laracon Online was Wednesday. In the absence of the in-person conference, I like going to a viewing party. There's one Jacob Bennett hosts in Illinois. It's about a 4 hour drive. But it's good to hang with other devs like Matt Stypa, Kevin McKee, Jordon Brill.
Since the Shift feedback emails are on a two weekday delay, I didn't start receiving them until Thursday and Friday. So I spent both of those days patching some of the edge cases which were reported and improving automation.
As always, the largest issue was package compatibility. I continued using Shift to automated more compatibility PRs. I also noticed more of the original PR's getting merged. I think at this point most of the popular packages support Laravel 9.
To that point, I normally wait a week myself. Unless it's a really small project. I did upgrade BaseCode as I know I don't use many packages within that project. Using Shift, the Laravel 9 upgrade took 14 minutes and 59 seconds.
I plan to do another live stream this week to upgrade another one of my projects. I'll also start on all of the Human Shifts coming in for projects which follow LTS. Silly enterprise, LTS is a trap. 😉
🔥 Tip
In tracking down one of the bugs in Shift, I needed a way to determine the line in a file given a character offset.
Now there's all sorts of fancy one-liner commands out on StackOverflow. But thinking about the problem naively the algorithm is roughly:
// Get substring from 0 to offset// Count line breaks within substring// Add one
After using PHP for over 20 years, I know it's a scripting language at heart. As such, anytime I come across one of these problems I scroll through PHP's native array and string functions.
More often than not, I find the exact function I need. In this case substr_count
. The end result is a one-liner even the StackOverflow answers didn't have 🔥
public function lineForCharacter(int $offset){ return substr_count($this->content, PHP_EOL, 0, $offset) + 1;}