Compatibility
Psalm now required Composer 2.
What's Changed
Deprecations
- Deprecated
Codebase::$php_major_version
andCodebase::$php_minor_version
properties by @weirdan in #7265 - Deprecated
THtmlEscapedString
by @weirdan in #7284
Features
- Template and variable types inference for methods marked with psalm-if-this-is by @klimick in #7259
- [Feat]: Initial Support for LSP Code Actions by @tm1000 in #7255
- Allow assertions on mutable object properties. by @AndrolGenhald in #7252
- Disallow ksorting lists by @danog in #7019
Fixes
- Remove "is not in project" warnings by @tm1000 in #7256
- Report missing file path properly by @simPod in #7266
- uniqid() returns a non-empty-string by @MidnightDesign in #7271
- pdo: more precise generic type by @staabm in #7274
- resolve ClassConstant for both sides in isContainedBy by @orklah in #7286
- Identify ints from TClassConstant when checking for LiteralEquality by @orklah in #7287
- resolve type alias and class const on UnionTypeComparator by @orklah in #7288
- Fix parse_url() return type by @villfa in #7293
- don't crash when pushing a template to in_array by @orklah in #7311
- Made all reflection classes implement Reflector by @donquixote in #7317
- fix empty string not quoted in keyed array offset by @orklah in #7309
- Prevented crashes on
array_map(...)
by @weirdan in #7321 - Fix analysis when __invoke() exists by @villfa in #7325
Internal changes
- Increase composer timeout by @weirdan in #7264
- Move from deprecated Composer 1 to Composer 2 runtime api by @DeyV in #7239
New Contributors
- @DeyV made their first contribution in #7239
- @MidnightDesign made their first contribution in #7271
- @donquixote made their first contribution in #7317
Full Changelog: 4.17.0...4.18