Laravel 9.11, weekly updates, and 🔥 tip
Laravel 9.11
Looks like Laravel ended up tagging a release last week on Wednesday instead of Tuesday. As well as a patch release Thursday. Combined with today's release it brings us to Laravel 9.11.
Here are some highlights from both:
- Add the ability to use alias when performing
upsertvia MySQL in #42053 - Add
beforeRefreshingDatabasecallback to theRefreshDatabasetrait in #42073 - Add
doesntExpectOutputToContainassertion in #42096 - Add
findOrto Eloquent in #42092 - Support 'IS' and 'IS NOT' PostgreSQL operators in #42123
- Add
stringtoIlluminate/Http/Requestin c9d34b7 - Add methods to append and prepend jobs to existing chain in #42138
- Add
hasandmissingtoValidatedInputin #42184 - Add
jointoArrclass in #42197 - Accept nested objects in
Arr::forget()in #42142 - Add
incrementQuietlyanddecrementQuietlydatabase methods in #42132
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 I began updating the Laravel Fixer, Upgrade Checker, and Tests Generator to require Laravel 9 as a minimum. It's a bit more work than I thought. So I'll continue on that this week.
I also met with a copywriter to review Shift's home page. She helped point out some inconsistent wording and areas to emphasize.
I also added the demo video to the page. But realized it has the previous design. So I'll likely work to refresh that this week as well.
Finally, a few Human Shifts came in. I finished one yesterday taking an application from Laravel 6.x to Laravel 9.x. The other I'll be upgrading from Laravel 5.5 to Laravel 6.x.
🔥 Tip
Within the Shift codebase I create rather complex objects. For example, a custom syntax parser. Often this parser may or may not get used depending on if any instances of code were found.
To optimize this, I use memoization. A common memoization method in PHP might be:
public function finder(){ static $finder; if (is_null($finder)) { $finder = new NikicParser(new CustomFinder()); } return $finder;}
Since 7.4, you may use null coalesce assignment to refactor this if statement:
public function finder(){ static $finder; $finder ??= new NikicParser(new CustomFinder()); return $finder;}