Major new feature 🚀
- New PHPDoc tags:
@phpstan-require-extends
,@phpstan-require-implements
, #10302, #9899, #8550, thanks @staabm!- Learn more: Making
@property
PHPDoc above interfaces work on PHP 8.2+ - Enforcing class inheritance for interfaces and traits
- Enforcing implementing an interface for traits
- Development of this feature was kindly sponsored by Pixel & Tonic, the team behind Craft CMS
- Learn more: Making
Improvements 🔧
- Scope - function call stack includes parameters too (phpstan/phpstan-src@b87e5c4), phpstan/phpstan-deprecation-rules#107
Bugfixes 🐛
- Process
match
arm condition before analysing the body (phpstan/phpstan-src@2b74aa8), #10418
Function signature fixes 🤖
- Fix transliterator function maps (#2862), thanks @PrinsFrank!
- Fix duplicate array key
Yaf_Response_Http::__clone
(#2863), thanks @PrinsFrank! - Add array shape for
transliterator::listIDs
return type (#2865), thanks @PrinsFrank! strtok()
always returns anon-empty-string
when it does not return false (#2869), thanks @staabm!
Internals 🔍
- Prevent repetative calls to
Type::getConstantArrays()
(#2864), thanks @staabm! - Remove redundant condition in ParametersAcceptorSelector (#2867), thanks @mad-briller!
- Simplify default return path in extensions (#2868), thanks @staabm!
- Reduce unnecessary calls to
Scope::getFunctionType()
(#2872), thanks @staabm!