Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
1.10.57
->1.11.3
1.1.4
->1.2.0
1.3.15
->1.4.0
1.5.2
->1.6.0
Release Notes
phpstan/phpstan (phpstan/phpstan)
v1.11.3
Compare Source
Improvements 🔧
*ParameterClosureTypeExtension
(#3089), thanks @canvural!get_debug_type
function (#2910), #10558, #10585, thanks @patrickkusebauch!explode
return type precision (#3096), thanks @staabm!Bugfixes 🐛
array_map
argument take into account unpack (#2901), #10527, thanks @ryium!parse_url
(#2918), #4754, thanks @ChrisBrenton!$http_response_header
is alist<string>
(#2959), thanks @Seldaek!str_repeat()
(#2914), #10572, thanks @staabm!in_array
is not strict (#2539), #9662, #10228, thanks @staabm!substr()
type narrowing for possibly single char result (#3081), #11035, #9804, thanks @staabm!$this
cannot be reassigned when passed by reference (#3097), #10477, thanks @takaram!constant('')
(#3013), #10867, thanks @staabm!Function signature fixes 🤖
SplFileObject::fgets()
(#3103), thanks @DanielSiepmann!Locale
signatures (#2880), #7855, #8149, thanks @devnix!fread()
length parameter type and return type (#3105), thanks @thg2k!non-falsy-string
(#3108), thanks @schlndh!Internals 🔍
TemplateTagValueNode::$name
cannot be empty string (phpstan/phpdoc-parser@fcaefac), thanks @staabm!v1.11.2
Compare Source
Improvements 🔧
@phpstan-ignore
identifiers parser (#3079, #3090, #3091), thanks @janedbal!@phpstan-ignore identifier (comment), identifier2 (comment2)
$passedToType
frominFunctionCallsStack
(phpstan/phpstan-src@ca41b7d, phpstan/phpstan-src@da4fd7a), #5508, #10254, #10732Function signature fixes 🤖
Internals 🔍
nette/di
(phpstan/phpstan-src@2ab647e)array_filter
callbacks (phpstan/phpstan-src@754b7b8)@api
annotation toAcceptsResult::__construct
(#3092), thanks @canvural!v1.11.1
Compare Source
Improvements 🔧
sprintf()
constant result inference (#3075), thanks @staabm!Bugfixes 🐛
impure(Function|Method).pure
if it has@phpstan-assert
tags (phpstan/phpstan-src@9544f8a)reportPossiblyNonexistentConstantArrayOffset: true
(phpstan/phpstan-src@5277630), #10997self
andstatic
in@phpstan-closure-this
from trait stub file (phpstan/phpstan-src@9340249), #11009Function signature fixes 🤖
uri
instream_get_meta_data
calls is always present on PHP 8.3+ (phpstan/phpstan-src@885d46b), #11024, #10999v1.11.0
Compare Source
Read the article about PHPStan 1.11 on phpstan.org »
Major new features 🚀
@phpstan-ignore
comment (uses current or next line automatically)ignoreErrors
section of your configuration file (phpstan.neon)-v
@phpstan-ignore-line
and@phpstan-ignore-next-line
to the new@phpstan-ignore
comment style with error identifiers. The old comment style is dangerous because it ignores all errors, current and future, on that line.ignoreErrors
, from your baseline and also ignored locally in source code using comments--pro
CLI option@param-immediately-invoked-callable
,@param-later-invoked-callable
@phpstan-pure
@param-closure-this
to describe what$this
is bound to in a passed closurereportPossiblyNonexistentGeneralArrayOffset
reportPossiblyNonexistentConstantArrayOffset
Bleeding edge 🔪
@phpstan-pure
above functions and methodsnew
/function call/method call/static method call on a separate line without any side effects even without@phpstan-pure
PHPDoc tag on the declaration side@param-out
(phpstan/phpstan-src@56b2002)If you want to see the shape of things to come and adopt bleeding edge features early, you can include this config file in your project's
phpstan.neon
:Of course, there are no backwards compatibility guarantees when you include this file. The behaviour and reported errors can change in minor versions with this file included. Learn more
Improvements 🔧
checkMissingIterableValueType: false
andcheckGenericClassInNonGenericObjectType: false
in favour of ignoring via identifiers (phpstan/phpstan-src@a649981)new
type (#3050), #9704, thanks @ruudk!RuleErrorBuilder::file()
- file path needs to exist (phpstan/phpstan-src@c453f29)$this
and used variables after invoking closure (#2980)@phan-
prefixes on recognized PHPDoc tags (#3000), thanks @anomiex!pure-callable
andpure-Closure
PHPDoc types (phpstan/phpstan-src@cdaff5f)highlight_string()
flips side-effects depending on $return (#3021), thanks @staabm!Bugfixes 🐛
AccessoryNonFalsyStringType::toInteger()
returnIntegerType
instead of non-zero (#3018), #10893, thanks @zonuexe!polluteScopeWithAlwaysIterableForeach
(#3029), #10922, thanks @VincentLanglet!count($x) > $n === true
negation (#3037), #10952, thanks @rvanvelzen!new
with wrong name case (phpstan/phpstan-src@59ac31a)preg_match_all
behaviour with no flags (phpstan/phpstan-src@a856ec7)file_get_contents
is an impure function (phpstan/phpstan-src@2b5b317)ClosureType::equals()
(phpstan/phpstan-src@29c35b5)exceptions.implicitThrows: false
(#3016), thanks @janedbal!ConstantArrayType::hasOffsetValueType()
for offset union type where all types are valid (phpstan/phpstan-src@26e949b)non-empty-list
always has offset 0 (phpstan/phpstan-src@f4d1d48)non-empty-string
/non-falsey-string
aftermb_strlen()
(#3038), thanks @staabm!Type::isOffsetAccessLegal()
to detect offset access that crashes even inisset()
(#3045), #8393, #10926, thanks @rajyan!match()
condition correctly (#3053), #10974, #9694, thanks @rvanvelzen!json_decode
with force array flag: subtract all objects, not just stdClass (#3052), thanks @rajyan!strlen($x) > $n === true
negation (#3040), thanks @staabm!Continue_
points should not be used forwhile (true)
(#3057), #10980, thanks @greew!Function signature fixes 🤖
stream_get_meta_data()
optional (#3024), #10887, thanks @hirokinoue!Closure::bind
$newScope
param (#2817), thanks @mvorisek!Imagick::identifyImage()
return type (#3017), thanks @SVillette!Internals 🔍
ClassReflection::getClassTypeDescription()
(phpstan/phpstan-src@dec9e43)RuleErrorBuilder::treatPhpDocTypesAsCertainTip()
for a bit more DRYness (#3035), thanks @axlon!v1.10.67
Compare Source
This is the last release, or one of the last releases, in 1.10.x series. The next one is going to be PHPStan 1.11, and it's going to be released at some point in May 2024.
Improvements 🔧
Bugfixes 🐛
date()
return types (#2888), #10468, #6613, thanks @zonuexe!get_defined_vars()
as using constructor arguments (#3012), #10865, thanks @rvanvelzen!Function signature fixes 🤖
gc_status()
signature for PHP8.3+ (#2996), thanks @staabm!mysqli_result::fetch_fields
(#3005), thanks @schlndh!Internals 🔍
v1.10.66
Compare Source
Improvements 🔧
Bugfixes 🐛
array_push
preserves list (phpstan/phpstan-src@5473b67)Function signature fixes 🤖
redis::get
signature (#2990), thanks @VincentLanglet!Internals 🔍
v1.10.65
Compare Source
Improvements 🔧
Bugfixes 🐛
Function signature fixes 🤖
Internals 🔍
TrinaryLogic::describe()
in test (phpstan/phpstan-src@222a66c)v1.10.64
Compare Source
Bleeding edge 🔪
If you want to see the shape of things to come and adopt bleeding edge features early, you can include this config file in your project's
phpstan.neon
:Of course, there are no backwards compatibility guarantees when you include this file. The behaviour and reported errors can change in minor versions with this file included. Learn more
Improvements 🔧
ForbiddenClassNameExtension
for append additional forbidden class prefixes (#2979), thanks @kamil-zacek!AlwaysUsedMethodExtension
(#2927), thanks @axlon!Bugfixes 🐛
Function signature fixes 🤖
DOMDocument::load
return type (#2975), thanks @VincentLanglet!SplObjectStorage::removeAll/Except
(#2892), thanks @schlndh!v1.10.63
Compare Source
v1.10.62
Compare Source
Improvements 🔧
Bugfixes 🐛
@param-out
work even if it is the only conditional type in a function signature (phpstan/phpstan-src@787c1e2)@param-out
- fix for conditional types (phpstan/phpstan-src@5a47893)v1.10.61
Compare Source
Improvements 🔧
final
modifier in traits (https://github.com/Roave/BetterReflection/pull/1383), thanks @kukulich!@param-out
(phpstan/phpstan-src@effad95), #10699@param-out
(phpstan/phpstan-src@67f9420)Bugfixes 🐛
@param-out
type - consider all execution ends at once (phpstan/phpstan-src@d1bcf78), #10687, #10684Internals 🔍
v1.10.60
Compare Source
Learn more about this release in an article on phpstan.org!
Major new features 🚀
@method
tags:@method T doFoo<T>(T $p)
, #6371callable<T>(T): T
, #8964Bleeding edge 🔪
reportAnyTypeWideningInVarTag
(#2840), thanks @janedbal!If you want to see the shape of things to come and adopt bleeding edge features early, you can include this config file in your project's
phpstan.neon
:Of course, there are no backwards compatibility guarantees when you include this file. The behaviour and reported errors can change in minor versions with this file included. Learn more
Improvements 🔧
Bugfixes 🐛
$a?->b::c()
and$a?->b::$c
(#2933), thanks @schlndh!fn() => __FUNCTION__
and__METHOD__
(#2934), thanks @schlndh!T of mixed&Foo
andT of mixed|Foo
(#2940), thanks @schlndh!isSuperTypeOf
of callable/Closure when parameter count differ (#2949), #10594, thanks @takaram!Function signature fixes 🤖
ReflectionFunctionAbstract::getExtension
return type (phpstan/phpstan-src@2ece1f8)date_sun_info()
function (#2947), thanks @zonuexe!mysqli get_warnings
(#2929), thanks @janedbal!Internals 🔍
Type::isNull()
inNullsafe(MethodCall|PropertyFetch)Rule
(#2942), thanks @takaram!v1.10.59
Compare Source
Bleeding edge 🔪
array_values
rule (report when alist
type is always passed in) (#2917), thanks @kamil-zacek!If you want to see the shape of things to come and adopt bleeding edge features early, you can include this config file in your project's
phpstan.neon
:Of course, there are no backwards compatibility guarantees when you include this file. The behaviour and reported errors can change in minor versions with this file included. Learn more
Improvements 🔧
treatPhpDocTypesAsCertain
(phpstan/phpstan-src@f5b198c)settype()
(#2920), thanks @ChrisBrenton!Bugfixes 🐛
Internals 🔍
FunctionReflection::isPure()
andExtendedMethodReflection::isPure()
(phpstan/phpstan-src@03d01ea)v1.10.58
Compare Source
Improvements 🔧
unset
(phpstan/phpstan-src@aeadbe2), #10506, #6773Bugfixes 🐛
@phpstan-require-extends
(#2890), #10475, thanks @RobertMe!sort()
,rsort()
andusort()
convert an array to list (#2891), #6467, #10423, #3312, thanks @takaram!T<X>
whereT
bound consist of intersection type (phpstan/phpstan-src@778b569), #10509[1 => 'method', 0 => $obj]
as callable (#2896), #10502, thanks @staabm!@phpstan-assert
PHPDoc inheritance with generics (#2909), #10037, #9123, thanks @RobertMe!Internals 🔍
isSuperTypeOf()
calls (#2895), thanks @staabm!ClassPropertiesNode->getUninitializedProperties()
(#2899), thanks @staabm!phpstan/phpstan-deprecation-rules (phpstan/phpstan-deprecation-rules)
v1.2.0
Compare Source
phpstan/phpstan-phpunit (phpstan/phpstan-phpunit)
[
v1.4.0
](https://togithub.com/phpstanConfiguration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR has been generated by Mend Renovate. View repository job log here.