What’s Changed
Focuses on wide range of type-infer and security features.
Security
- Detect user-controlled container resolution as unsafe reflection (CWE-470) (#1075) @alies-dev
- Detect timing-unsafe comparisons of secrets (CWE-208) (#1013) @alies-dev
- Add
html_urltaint kind for URL-context XSS distinct frome()(#1014) @alies-dev
Relationships
- Fix
MissingTemplateParamon in-bodybelongsToMany()/morphToMany()pivot chains (#1090) @alies-dev - Fix
mixedcollapse when chaining off relation methods (replace$thisbystaticin generic templates, use@template-covariantfor relationships) (#1055) @alies-dev
Filesystem
- Narrow
FilesystemAdapterlisting methods tolist<string>(#1094) @alies-dev
Pagination
- Narrow
Storage::disk()toFilesystemAdaptersotemporaryUrl()andurl()resolve (#1093) @alies-dev - Return the concrete paginator from
paginate()and preserve the related-model template through relations (#1082) @alies-dev
Forms
- Narrow
FormRequestmagic property reads ($request->fieldcalls) (#1022) @alies-dev
Best Practices
- Add opt-in
ImplicitQueryBuilderCallrule for direct model query and scope calls. Requires writingUser::query()->where...instead of (User::where...) (#1068) @alies-dev
Other Features and Fixes
- Infer
app(Foo::class)asFoowhen the booted app cannot resolve it (Laravel packages) (#1076) @alies-dev - Narrow
when()/unless()callback return types (#997) @alies-dev - Suppress false
PossiblyUnusedMethodon Eloquent trait boot/initialize hooks (#1080) @alies-dev - Fix false-positive
UndefinedMethodon$app->when()->needs()chains (#1077) @alies-dev
Internal changes
- Raise minimum Laravel 12.x version to ^12.4 (Laravel 11.x is still supported on v3.x plugin) (#1089) @alies-dev
- CI: add a new
/psalm-deltaworkflow to benchmark plugin over real apps and libs (#1079, #1086, #1084) @alies-dev
Full Changelog: v3.13.2...v3.14.0