Improvements 🔧
- Add new
*ParameterClosureTypeExtension
(#3089), thanks @canvural! - DynamicFunctionReturnTypeExtension for the
get_debug_type
function (#2910), #10558, #10585, thanks @patrickkusebauch! - Infer more duplicated array keys (#3058), #6976, thanks @VincentLanglet!
- Improve
explode
return type precision (#3096), thanks @staabm! - Make assigning property via reference impure (#3082), thanks @schlndh!
- Support new PHP 8.4 mb_lcfirst, mb_ucfirst function variants (#3095), thanks @staabm!
Bugfixes 🐛
- Make
array_map
argument take into account unpack (#2901), #10527, thanks @ryium! - Fixes incorrect types reported by
parse_url
(#2918), #4754, thanks @ChrisBrenton! - Ensure
$http_response_header
is alist<string>
(#2959), thanks @Seldaek! - Keep numeric-strings in
str_repeat()
(#2914), #10572, thanks @staabm! - Array is non-empty even when
in_array
is not strict (#2539), #9662, #10228, thanks @staabm! - Fix
substr()
type narrowing for possibly single char result (#3081), #11035, #9804, thanks @staabm! - Fix escaping of the error message in various output formatters (#3087), thanks @mousetail!
$this
cannot be reassigned when passed by reference (#3097), #10477, thanks @takaram!- Subtract zero-float when comparing against zero-int (#3102), #5309, thanks @staabm!
- Fix fatal error on
constant('')
(#3013), #10867, thanks @staabm!
Function signature fixes 🤖
- Add new header functions for PHP 8.4 (#3093), thanks @Seldaek!
- Fix wrong return type for
SplFileObject::fgets()
(#3103), thanks @DanielSiepmann! - Update
Locale
signatures (#2880), #7855, #8149, thanks @devnix! - Fix wrong
fread()
length parameter type and return type (#3105), thanks @thg2k! - ReflectionFunction and ReflectionMethod::getClosure cannot return null (phpstan/phpstan-src@dae9335), #10839
- Make method names
non-falsy-string
(#3108), thanks @schlndh!