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
upsert
via MySQL in #42053 - Add
beforeRefreshingDatabase
callback to theRefreshDatabase
trait in #42073 - Add
doesntExpectOutputToContain
assertion in #42096 - Add
findOr
to Eloquent in #42092 - Support 'IS' and 'IS NOT' PostgreSQL operators in #42123
- Add
string
toIlluminate/Http/Request
in c9d34b7 - Add methods to append and prepend jobs to existing chain in #42138
- Add
has
andmissing
toValidatedInput
in #42184 - Add
join
toArr
class in #42197 - Accept nested objects in
Arr::forget()
in #42142 - Add
incrementQuietly
anddecrementQuietly
database 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;}