5.0.0
Merry Christmas! 🎄 🎅
Major version, major work
This release is a new major version of roave/better-reflection
, containing
over 600 commits, 163 pull requests, and more than 400 reviews, provided (mostly,
but not exclusively) by:
Thank you all: your thankless work means a lot.
Most relevant changes
The biggest improvements in this release are:
- full support for
php:~8.0.12
- full support for
php:~8.1.0
- dropped support for
php:<8.0.12
- better ergonomics thanks to a new unified
new \Roave\BetterReflection\BetterReflection()
entry-point (if you do not know where to start, when using this library) - major performance and memory efficiency advancement
- type inference improvements: the library now passes all
vimeo/psalm
andphpstan/phpstan
type checks - ability to reflect symbols defined via
class_alias()
- better core reflection symbols thanks to
jetbrains/phpstorm-stubs:2021.3
and improved internal stub parsing mechanisms.
Language version support
Because of the incredible amount of tiny (yet high impact) backwards incompatible breakages
in php
itself, we had to completely cut compatibility
between php:^7.4
and this library: a major version increase was required to support PHP 8.0,
and it is likely that this will happen again with new backwards-incompatible changes in PHP 8.2
and other future language versions.
Supporting both PHP 7.4 and PHP 8.0 was not feasibly possible without a dedicated budget for
the project: we hope that the improvements will help the ecosystem grow, and move to newer
versions of the language as soon as possible.
We may re-consider this approach, should patronage allow for full-time work on this library.
Breaking changes
If you extend
or implement
classes or interfaces of this library, we strongly endorse to
run vimeo/psalm
or phpstan/phpstan
on your codebase, to identify possibly breakage points.
Most notable breaking changes since 4.12.0
:
Better reflector API
Following reflectors were merged into a single Roave\BetterReflection\Reflector\Reflector
interface:
Roave\BetterReflection\Reflector\ClassReflector
Roave\BetterReflection\Reflector\FunctionReflector
Roave\BetterReflection\Reflector\ConstantReflector
Where you previously created a specific reflector, you would now use a new \Roave\BetterReflection\Reflector\DefaultReflector(...)
,
or rely on the default (new \Roave\BetterReflection\BetterReflection())->reflector()
factory method.
Monkey-patching support removed
While BetterReflection 4.x advertised "monkey-patching" support, as in "modifying reflection symbols before they
are loaded by PHP", this functionality was too superficial, and supporting it fully would have required major
increase of the API surface of the library.
In order to focus our efforts on compatibility with core reflection, and support of newer PHP versions, we decided
to keep the library at what it does best: finding and reflecting code.
Therefore, all support for monkey-patching code has been removed: BetterReflection can still give you the AST
and source locations for your code, but changing and writing to it is now up to you, and the abstraction that
you prefer to use to do so.
DocBlock parsing removed
In 2020 and 2021, the detail in type declarations increased a lot, thanks to phpstan/phpstan
and vimeo/psalm
pushing the ecosystem towards a more type-safe future.
DocBlock types now include generic types, purity markers,
inheritance refinements and cross-file references.
We can't really keep up with it (due to the ever-evolving standard) and the type parsing support that we provided
so far is insufficient to keep up with modern docBlock-based type definitions.
Therefore, DocBlock support has been completely removed: this library will limit itself to providing the
DocBlock contents, but without interpreting them.
Better types for reflection functions and types
Roave\BetterReflection\Reflection\ReflectionFunctionAbstract
is now a trait
: most methods that
used to accept it now require a union type of ReflectionFunction|ReflectionMethod
to operate.
The same applies to Roave\BetterReflection\Reflection\ReflectionType
: most type signatures in the
library will not operate with (or return) a ReflectionType
, but instead a union type such as
NamedType|UnionType|IntersectionType|null
, to better represent the limits of what this library
can understand, and to better highlight future backwards-incompatible changes.
Constant expressions can now yield object
s and resources
Before PHP 8.0, it was not possible to put non-scalar values in const
and constant()
expressions,
at least from userland. This changed recently, and BetterReflection had to adapt too.
Evaluating AST expressions, such as when calling ReflectionConstant#getValue()
, can now produce mixed
values, whereas only scalar
and array
values supported before
List of BC breaks
This is a list of detected BC breaks, generated via roave/backward-compatibility-check:6.0.x-dev
.
It is a long list, but it is useful as a reference, should you encounter specific breakages in particular
methods that you rely upon.
[BC] REMOVED: Class Roave\BetterReflection\TypesFinder\ResolveTypes has been deleted
[BC] REMOVED: Class Roave\BetterReflection\TypesFinder\PhpDocumentor\NamespaceNodeToReflectionTypeContext has been deleted
[BC] REMOVED: Class Roave\BetterReflection\TypesFinder\FindReturnType has been deleted
[BC] REMOVED: Class Roave\BetterReflection\TypesFinder\FindPropertyType has been deleted
[BC] REMOVED: Class Roave\BetterReflection\TypesFinder\FindParameterType has been deleted
[BC] REMOVED: Method Roave\BetterReflection\BetterReflection#classReflector() was removed
[BC] REMOVED: Method Roave\BetterReflection\BetterReflection#functionReflector() was removed
[BC] REMOVED: Method Roave\BetterReflection\BetterReflection#constantReflector() was removed
[BC] CHANGED: Roave\BetterReflection\SourceLocator\Located\InternalLocatedSource was marked "@internal"
[BC] CHANGED: The number of required arguments for Roave\BetterReflection\SourceLocator\Located\InternalLocatedSource#__construct() increased from 2 to 3
[BC] CHANGED: Parameter 1 of Roave\BetterReflection\SourceLocator\Located\InternalLocatedSource#__construct() changed name from extensionName to name
[BC] CHANGED: Roave\BetterReflection\SourceLocator\Located\EvaledLocatedSource was marked "@internal"
[BC] CHANGED: The number of required arguments for Roave\BetterReflection\SourceLocator\Located\EvaledLocatedSource#__construct() increased from 1 to 2
[BC] CHANGED: The parameter $nonSplFileInfo of Roave\BetterReflection\SourceLocator\Exception\InvalidFileInfo::fromNonSplFileInfo() changed from no type to mixed
[BC] REMOVED: Method Roave\BetterReflection\SourceLocator\Exception\InvalidDirectory::fromNonStringValue() was removed
[BC] ADDED: Method reflectClass() was added to interface Roave\BetterReflection\Reflector\Reflector
[BC] ADDED: Method reflectAllClasses() was added to interface Roave\BetterReflection\Reflector\Reflector
[BC] ADDED: Method reflectFunction() was added to interface Roave\BetterReflection\Reflector\Reflector
[BC] ADDED: Method reflectAllFunctions() was added to interface Roave\BetterReflection\Reflector\Reflector
[BC] ADDED: Method reflectConstant() was added to interface Roave\BetterReflection\Reflector\Reflector
[BC] ADDED: Method reflectAllConstants() was added to interface Roave\BetterReflection\Reflector\Reflector
[BC] REMOVED: Method Roave\BetterReflection\Reflector\Reflector#reflect() was removed
[BC] REMOVED: Class Roave\BetterReflection\Reflector\FunctionReflector has been deleted
[BC] REMOVED: Class Roave\BetterReflection\Reflector\ConstantReflector has been deleted
[BC] REMOVED: Class Roave\BetterReflection\Reflector\ClassReflector has been deleted
[BC] CHANGED: Class Roave\BetterReflection\Reflection\ReflectionType became abstract
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionType::createFromTypeAndReflector() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionType#isBuiltin() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionType#targetReflectionClass() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionType#getName() was removed
[BC] CHANGED: Method allowsNull() of class Roave\BetterReflection\Reflection\ReflectionType changed from concrete to abstract
[BC] CHANGED: Method __toString() of class Roave\BetterReflection\Reflection\ReflectionType changed from concrete to abstract
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionProperty#setVisibility() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionProperty#getDocBlockTypeStrings() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionProperty#getDocBlockTypes() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionProperty#setType() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionProperty#removeType() was removed
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionProperty#getDefaultValue() changed from no type to string|int|float|bool|array|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionProperty#getValue() changed from no type to mixed
[BC] CHANGED: The parameter $value of Roave\BetterReflection\Reflection\ReflectionProperty#setValue() changed from no type to a non-contravariant mixed|null
[BC] CHANGED: The parameter $object of Roave\BetterReflection\Reflection\ReflectionProperty#setValue() changed from no type to mixed
[BC] CHANGED: The parameter $value of Roave\BetterReflection\Reflection\ReflectionProperty#setValue() changed from no type to mixed|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionProperty#getType() changed from Roave\BetterReflection\Reflection\ReflectionType|null to Roave\BetterReflection\Reflection\ReflectionNamedType|Roave\BetterReflection\Reflection\ReflectionUnionType|Roave\BetterReflection\Reflection\ReflectionIntersectionType|null
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionParameter#getDocBlockTypeStrings() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionParameter#getDocBlockTypes() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionParameter#setType() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionParameter#removeType() was removed
[BC] CHANGED: The parameter $spec of Roave\BetterReflection\Reflection\ReflectionParameter::createFromSpec() changed from no type to a non-contravariant array|string|Closure
[BC] CHANGED: The parameter $spec of Roave\BetterReflection\Reflection\ReflectionParameter::createFromSpec() changed from no type to array|string|Closure
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionParameter#getDeclaringFunction() changed from Roave\BetterReflection\Reflection\ReflectionFunctionAbstract to the non-covariant Roave\BetterReflection\Reflection\ReflectionMethod|Roave\BetterReflection\Reflection\ReflectionFunction
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionParameter#getDeclaringFunction() changed from Roave\BetterReflection\Reflection\ReflectionFunctionAbstract to Roave\BetterReflection\Reflection\ReflectionMethod|Roave\BetterReflection\Reflection\ReflectionFunction
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionParameter#getDefaultValue() changed from no type to string|int|float|bool|array|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionParameter#getType() changed from Roave\BetterReflection\Reflection\ReflectionType|null to Roave\BetterReflection\Reflection\ReflectionNamedType|Roave\BetterReflection\Reflection\ReflectionUnionType|Roave\BetterReflection\Reflection\ReflectionIntersectionType|null
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionObject#setFinal() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionObject#removeMethod() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionObject#addMethod() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionObject#removeProperty() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionObject#addProperty() was removed
[BC] CHANGED: Parameter 0 of Roave\BetterReflection\Reflection\ReflectionObject::createFromInstance() changed name from object to instance
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionObject#getConstant() changed from no type to string|int|float|bool|array|null
[BC] CHANGED: The parameter $object of Roave\BetterReflection\Reflection\ReflectionObject#isInstance() changed from no type to a non-contravariant object
[BC] CHANGED: The parameter $object of Roave\BetterReflection\Reflection\ReflectionObject#isInstance() changed from no type to object
[BC] CHANGED: The parameter $value of Roave\BetterReflection\Reflection\ReflectionObject#setStaticPropertyValue() changed from no type to mixed
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionObject#getStaticPropertyValue() changed from no type to mixed
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionObject#getAst() changed from PhpParser\Node\Stmt\ClassLike to PhpParser\Node\Stmt\Class_|PhpParser\Node\Stmt\Interface_|PhpParser\Node\Stmt\Trait_|PhpParser\Node\Stmt\Enum_
[BC] REMOVED: Constant Roave\BetterReflection\Reflection\ReflectionMethod::CLOSURE_NAME was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#__construct() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#populateFunctionAbstract() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#getNode() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#getDocBlockReturnTypes() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#setReturnType() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#removeReturnType() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#setBodyFromClosure() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#setBodyFromString() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#setBodyFromAst() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#addParameter() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#removeParameter() was removed
[BC] REMOVED: These ancestors of Roave\BetterReflection\Reflection\ReflectionMethod have been removed: ["Roave\\BetterReflection\\Reflection\\ReflectionFunctionAbstract"]
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionMethod#invoke() changed from no type to mixed
[BC] CHANGED: The parameter $args of Roave\BetterReflection\Reflection\ReflectionMethod#invoke() changed from no type to mixed
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionMethod#invokeArgs() changed from no type to mixed
[BC] CHANGED: Method __construct() of class Roave\BetterReflection\Reflection\ReflectionFunctionAbstract visibility reduced from protected to private
[BC] CHANGED: The number of required arguments for Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#__construct() increased from 0 to 8
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#getReturnType() changed from Roave\BetterReflection\Reflection\ReflectionType|null to Roave\BetterReflection\Reflection\ReflectionNamedType|Roave\BetterReflection\Reflection\ReflectionUnionType|Roave\BetterReflection\Reflection\ReflectionIntersectionType|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#getAst() changed from PhpParser\Node\FunctionLike to PhpParser\Node\Stmt\ClassMethod
[BC] CHANGED: Class Roave\BetterReflection\Reflection\ReflectionFunctionAbstract became a trait
[BC] REMOVED: Constant Roave\BetterReflection\Reflection\ReflectionFunctionAbstract::CLOSURE_NAME was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#__construct() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#populateFunctionAbstract() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#getNode() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#getDocBlockReturnTypes() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#setReturnType() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#removeReturnType() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#setBodyFromClosure() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#setBodyFromString() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#setBodyFromAst() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#addParameter() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#removeParameter() was removed
[BC] CHANGED: Method getShortName() of class Roave\BetterReflection\Reflection\ReflectionFunctionAbstract changed from concrete to abstract
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#getReturnType() changed from Roave\BetterReflection\Reflection\ReflectionType|null to Roave\BetterReflection\Reflection\ReflectionNamedType|Roave\BetterReflection\Reflection\ReflectionUnionType|Roave\BetterReflection\Reflection\ReflectionIntersectionType|null
[BC] CHANGED: Method getAst() of class Roave\BetterReflection\Reflection\ReflectionFunctionAbstract changed from concrete to abstract
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#getAst() changed from PhpParser\Node\FunctionLike to PhpParser\Node\Stmt\ClassMethod|PhpParser\Node\Stmt\Function_|PhpParser\Node\Expr\Closure|PhpParser\Node\Expr\ArrowFunction
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#__construct() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#populateFunctionAbstract() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#getNode() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#getDocBlockReturnTypes() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#setReturnType() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#removeReturnType() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#setBodyFromClosure() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#setBodyFromString() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#setBodyFromAst() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#addParameter() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#removeParameter() was removed
[BC] REMOVED: These ancestors of Roave\BetterReflection\Reflection\ReflectionFunction have been removed: ["Roave\\BetterReflection\\Reflection\\ReflectionFunctionAbstract"]
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionFunction#invoke() changed from no type to mixed
[BC] CHANGED: The parameter $args of Roave\BetterReflection\Reflection\ReflectionFunction#invoke() changed from no type to mixed
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionFunction#invokeArgs() changed from no type to mixed
[BC] CHANGED: Method __construct() of class Roave\BetterReflection\Reflection\ReflectionFunctionAbstract visibility reduced from protected to private
[BC] CHANGED: The number of required arguments for Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#__construct() increased from 0 to 3
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#getReturnType() changed from Roave\BetterReflection\Reflection\ReflectionType|null to Roave\BetterReflection\Reflection\ReflectionNamedType|Roave\BetterReflection\Reflection\ReflectionUnionType|Roave\BetterReflection\Reflection\ReflectionIntersectionType|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#getAst() changed from PhpParser\Node\FunctionLike to PhpParser\Node\Stmt\Function_|PhpParser\Node\Expr\Closure|PhpParser\Node\Expr\ArrowFunction
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionConstant#getValue() changed from no type to mixed
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionClassConstant#getValue() changed from no type to mixed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionClass#setFinal() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionClass#removeMethod() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionClass#addMethod() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionClass#addProperty() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionClass#removeProperty() was removed
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionClass#getConstant() changed from no type to string|int|float|bool|array|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionClass#getStaticPropertyValue() changed from no type to mixed
[BC] CHANGED: The parameter $value of Roave\BetterReflection\Reflection\ReflectionClass#setStaticPropertyValue() changed from no type to mixed
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionClass#getAst() changed from PhpParser\Node\Stmt\ClassLike to PhpParser\Node\Stmt\Class_|PhpParser\Node\Stmt\Interface_|PhpParser\Node\Stmt\Trait_|PhpParser\Node\Stmt\Enum_
[BC] REMOVED: Class Roave\BetterReflection\Reflection\Exception\ReflectionTypeDoesNotPointToAClassAlikeType has been deleted
[BC] REMOVED: Class Roave\BetterReflection\Reflection\Exception\InvalidAbstractFunctionNodeType has been deleted
[BC] CHANGED: Class Roave\BetterReflection\Reflection\Adapter\ReflectionType became abstract
[BC] REMOVED: Method Roave\BetterReflection\Reflection\Adapter\ReflectionType#__construct() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\Adapter\ReflectionType::fromReturnTypeOrNull() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\Adapter\ReflectionType#isBuiltin() was removed
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionType#allowsNull() changed from bool to the non-covariant no type
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionType#allowsNull() changed from bool to no type
[BC] CHANGED: Class Roave\BetterReflection\Reflection\Adapter\ReflectionProperty became final
[BC] REMOVED: Method Roave\BetterReflection\Reflection\Adapter\ReflectionProperty::export() was removed
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionProperty#__toString() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionProperty#getName() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionProperty#getValue() changed from no type to mixed
[BC] CHANGED: The parameter $object of Roave\BetterReflection\Reflection\Adapter\ReflectionProperty#getValue() changed from no type to a non-contravariant object|null
[BC] CHANGED: The parameter $object of Roave\BetterReflection\Reflection\Adapter\ReflectionProperty#getValue() changed from no type to object|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionProperty#setValue() changed from no type to void
[BC] CHANGED: The parameter $value of Roave\BetterReflection\Reflection\Adapter\ReflectionProperty#setValue() changed from no type to a non-contravariant mixed|null
[BC] CHANGED: The parameter $object of Roave\BetterReflection\Reflection\Adapter\ReflectionProperty#setValue() changed from no type to mixed
[BC] CHANGED: The parameter $value of Roave\BetterReflection\Reflection\Adapter\ReflectionProperty#setValue() changed from no type to mixed|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionProperty#hasType() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionProperty#getType() changed from no type to Roave\BetterReflection\Reflection\Adapter\ReflectionUnionType|Roave\BetterReflection\Reflection\Adapter\ReflectionNamedType|Roave\BetterReflection\Reflection\Adapter\ReflectionIntersectionType|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionProperty#isPublic() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionProperty#isPrivate() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionProperty#isProtected() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionProperty#isStatic() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionProperty#isDefault() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionProperty#getModifiers() changed from no type to int
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionProperty#getDeclaringClass() changed from no type to Roave\BetterReflection\Reflection\Adapter\ReflectionClass
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionProperty#getDocComment() changed from no type to string|false
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionProperty#setAccessible() changed from no type to void
[BC] CHANGED: The parameter $accessible of Roave\BetterReflection\Reflection\Adapter\ReflectionProperty#setAccessible() changed from no type to a non-contravariant bool
[BC] CHANGED: The parameter $accessible of Roave\BetterReflection\Reflection\Adapter\ReflectionProperty#setAccessible() changed from no type to bool
[BC] CHANGED: The return type of ReflectionProperty#isInitialized() changed from no type to bool
[BC] CHANGED: The return type of ReflectionProperty#getDefaultValue() changed from no type to mixed
[BC] CHANGED: Class Roave\BetterReflection\Reflection\Adapter\ReflectionParameter became final
[BC] REMOVED: Method Roave\BetterReflection\Reflection\Adapter\ReflectionParameter::export() was removed
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionParameter#__toString() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionParameter#getName() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionParameter#isPassedByReference() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionParameter#canBePassedByValue() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionParameter#getDeclaringFunction() changed from no type to ReflectionFunctionAbstract
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionParameter#getDeclaringClass() changed from no type to ReflectionClass|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionParameter#getClass() changed from no type to ReflectionClass|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionParameter#isArray() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionParameter#isCallable() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionParameter#allowsNull() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionParameter#getPosition() changed from no type to int
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionParameter#isOptional() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionParameter#isVariadic() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionParameter#isDefaultValueAvailable() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionParameter#getDefaultValue() changed from no type to mixed
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionParameter#isDefaultValueConstant() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionParameter#getDefaultValueConstantName() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionParameter#hasType() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionParameter#getType() changed from no type to Roave\BetterReflection\Reflection\Adapter\ReflectionNamedType|Roave\BetterReflection\Reflection\Adapter\ReflectionUnionType|Roave\BetterReflection\Reflection\Adapter\ReflectionIntersectionType|Roave\BetterReflection\Reflection\Adapter\ReflectionType|null
[BC] CHANGED: Class Roave\BetterReflection\Reflection\Adapter\ReflectionObject became final
[BC] REMOVED: Method Roave\BetterReflection\Reflection\Adapter\ReflectionObject::export() was removed
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#__toString() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getName() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#isInternal() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#isUserDefined() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#isInstantiable() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#isCloneable() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getFileName() changed from no type to string|false
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getStartLine() changed from no type to int|false
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getEndLine() changed from no type to int|false
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getDocComment() changed from no type to string|false
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getConstructor() changed from no type to Roave\BetterReflection\Reflection\Adapter\ReflectionMethod
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#hasMethod() changed from no type to bool
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#hasMethod() changed from no type to a non-contravariant string
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#hasMethod() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getMethod() changed from no type to Roave\BetterReflection\Reflection\Adapter\ReflectionMethod
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getMethod() changed from no type to a non-contravariant string
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getMethod() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getMethods() changed from no type to array
[BC] CHANGED: The parameter $filter of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getMethods() changed from no type to a non-contravariant int|null
[BC] CHANGED: The parameter $filter of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getMethods() changed from no type to int|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#hasProperty() changed from no type to bool
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#hasProperty() changed from no type to a non-contravariant string
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#hasProperty() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getProperty() changed from no type to Roave\BetterReflection\Reflection\Adapter\ReflectionProperty
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getProperty() changed from no type to a non-contravariant string
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getProperty() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getProperties() changed from no type to array
[BC] CHANGED: The parameter $filter of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getProperties() changed from no type to a non-contravariant int|null
[BC] CHANGED: The parameter $filter of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getProperties() changed from no type to int|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#hasConstant() changed from no type to bool
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#hasConstant() changed from no type to a non-contravariant string
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#hasConstant() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getConstants() changed from no type to array
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getConstant() changed from no type to mixed
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getConstant() changed from no type to a non-contravariant string
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getConstant() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getInterfaces() changed from no type to array
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getInterfaceNames() changed from no type to array
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#isInterface() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getTraits() changed from no type to array
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getTraitNames() changed from no type to array
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getTraitAliases() changed from no type to array
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#isTrait() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#isAbstract() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#isFinal() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getModifiers() changed from no type to int
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#isInstance() changed from no type to bool
[BC] CHANGED: The parameter $object of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#isInstance() changed from no type to a non-contravariant object
[BC] CHANGED: The parameter $object of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#isInstance() changed from no type to object
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#newInstance() changed from no type to Roave\BetterReflection\Reflection\Adapter\ReflectionObject
[BC] CHANGED: The parameter $arg of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#newInstance() changed from no type to mixed
[BC] CHANGED: Parameter 0 of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#newInstance() changed name from arg to args
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#newInstanceWithoutConstructor() changed from no type to Roave\BetterReflection\Reflection\Adapter\ReflectionObject
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#newInstanceArgs() changed from no type to Roave\BetterReflection\Reflection\Adapter\ReflectionObject
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getParentClass() changed from no type to Roave\BetterReflection\Reflection\Adapter\ReflectionClass|false
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#isSubclassOf() changed from no type to bool
[BC] CHANGED: The parameter $class of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#isSubclassOf() changed from no type to a non-contravariant ReflectionClass|string
[BC] CHANGED: The parameter $class of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#isSubclassOf() changed from no type to ReflectionClass|string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getStaticProperties() changed from no type to array
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getStaticPropertyValue() changed from no type to mixed
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getStaticPropertyValue() changed from no type to a non-contravariant string
[BC] CHANGED: The parameter $default of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getStaticPropertyValue() changed from no type to a non-contravariant mixed|null
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getStaticPropertyValue() changed from no type to string
[BC] CHANGED: The parameter $default of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getStaticPropertyValue() changed from no type to mixed|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#setStaticPropertyValue() changed from no type to void
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#setStaticPropertyValue() changed from no type to a non-contravariant string
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#setStaticPropertyValue() changed from no type to string
[BC] CHANGED: The parameter $value of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#setStaticPropertyValue() changed from no type to mixed
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getDefaultProperties() changed from no type to array
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#isIterateable() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#implementsInterface() changed from no type to bool
[BC] CHANGED: The parameter $interface of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#implementsInterface() changed from no type to a non-contravariant ReflectionClass|string
[BC] CHANGED: The parameter $interface of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#implementsInterface() changed from no type to ReflectionClass|string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getExtension() changed from no type to ReflectionExtension|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getExtensionName() changed from no type to string|false
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#inNamespace() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getNamespaceName() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionObject#getShortName() changed from no type to string
[BC] CHANGED: The return type of ReflectionClass#isAnonymous() changed from no type to bool
[BC] CHANGED: The return type of ReflectionClass#getReflectionConstants() changed from no type to array
[BC] CHANGED: The return type of ReflectionClass#getReflectionConstant() changed from no type to Roave\BetterReflection\Reflection\Adapter\ReflectionClassConstant|false
[BC] CHANGED: The return type of ReflectionClass#isIterable() changed from no type to bool
[BC] CHANGED: Class Roave\BetterReflection\Reflection\Adapter\ReflectionNamedType became final
[BC] REMOVED: Method Roave\BetterReflection\Reflection\Adapter\ReflectionNamedType::fromReturnTypeOrNull() was removed
[BC] CHANGED: The number of required arguments for Roave\BetterReflection\Reflection\Adapter\ReflectionNamedType#__construct() increased from 1 to 2
[BC] CHANGED: The parameter $betterReflectionType of Roave\BetterReflection\Reflection\Adapter\ReflectionNamedType#__construct() changed from Roave\BetterReflection\Reflection\ReflectionType to a non-contravariant Roave\BetterReflection\Reflection\ReflectionNamedType
[BC] CHANGED: The parameter $betterReflectionType of Roave\BetterReflection\Reflection\Adapter\ReflectionNamedType#__construct() changed from Roave\BetterReflection\Reflection\ReflectionType to Roave\BetterReflection\Reflection\ReflectionNamedType
[BC] CHANGED: Class Roave\BetterReflection\Reflection\Adapter\ReflectionMethod became final
[BC] REMOVED: Method Roave\BetterReflection\Reflection\Adapter\ReflectionMethod::export() was removed
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#__toString() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#inNamespace() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#isClosure() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#isDeprecated() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#isInternal() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#isUserDefined() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#getClosureThis() changed from no type to object|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#getClosureScopeClass() changed from no type to ReflectionClass|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#getDocComment() changed from no type to string|false
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#getEndLine() changed from no type to int|false
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#getExtension() changed from no type to ReflectionExtension|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#getExtensionName() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#getFileName() changed from no type to string|false
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#getName() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#getNamespaceName() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#getNumberOfParameters() changed from no type to int
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#getNumberOfRequiredParameters() changed from no type to int
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#getParameters() changed from no type to array
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#getReturnType() changed from no type to ReflectionType|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#getShortName() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#getStartLine() changed from no type to int|false
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#getStaticVariables() changed from no type to array
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#returnsReference() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#isGenerator() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#isVariadic() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#isPublic() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#isPrivate() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#isProtected() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#isAbstract() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#isFinal() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#isStatic() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#isConstructor() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#isDestructor() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#getClosure() changed from no type to Closure
[BC] CHANGED: The parameter $object of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#getClosure() changed from no type to a non-contravariant object|null
[BC] CHANGED: The parameter $object of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#getClosure() changed from no type to object|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#getModifiers() changed from no type to int
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#invoke() changed from no type to mixed
[BC] CHANGED: The parameter $object of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#invoke() changed from no type to a non-contravariant object|null
[BC] CHANGED: The parameter $object of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#invoke() changed from no type to object|null
[BC] CHANGED: The parameter $args of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#invoke() changed from no type to mixed
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#invokeArgs() changed from no type to mixed
[BC] CHANGED: The parameter $object of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#invokeArgs() changed from no type to a non-contravariant object|null
[BC] CHANGED: The parameter $object of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#invokeArgs() changed from no type to object|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#getDeclaringClass() changed from no type to Roave\BetterReflection\Reflection\Adapter\ReflectionClass
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#getPrototype() changed from no type to Roave\BetterReflection\Reflection\Adapter\ReflectionMethod
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#setAccessible() changed from no type to void
[BC] CHANGED: The parameter $accessible of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#setAccessible() changed from no type to a non-contravariant bool
[BC] CHANGED: The parameter $accessible of Roave\BetterReflection\Reflection\Adapter\ReflectionMethod#setAccessible() changed from no type to bool
[BC] CHANGED: The return type of ReflectionFunctionAbstract#hasReturnType() changed from no type to bool
[BC] CHANGED: Class Roave\BetterReflection\Reflection\Adapter\ReflectionFunction became final
[BC] REMOVED: Method Roave\BetterReflection\Reflection\Adapter\ReflectionFunction::export() was removed
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#__toString() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#inNamespace() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#isClosure() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#isDeprecated() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#isInternal() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#isUserDefined() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#getClosureThis() changed from no type to object|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#getClosureScopeClass() changed from no type to ReflectionClass|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#getDocComment() changed from no type to string|false
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#getEndLine() changed from no type to int|false
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#getExtension() changed from no type to ReflectionExtension|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#getExtensionName() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#getFileName() changed from no type to string|false
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#getName() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#getNamespaceName() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#getNumberOfParameters() changed from no type to int
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#getNumberOfRequiredParameters() changed from no type to int
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#getParameters() changed from no type to array
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#getReturnType() changed from no type to ReflectionType|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#getShortName() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#getStartLine() changed from no type to int|false
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#getStaticVariables() changed from no type to array
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#returnsReference() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#isGenerator() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#isVariadic() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#isDisabled() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#invoke() changed from no type to mixed
[BC] CHANGED: The parameter $args of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#invoke() changed from no type to mixed
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#invokeArgs() changed from no type to mixed
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionFunction#getClosure() changed from no type to Closure
[BC] CHANGED: The return type of ReflectionFunctionAbstract#hasReturnType() changed from no type to bool
[BC] CHANGED: Class Roave\BetterReflection\Reflection\Adapter\ReflectionClassConstant became final
[BC] CHANGED: The parameter $betterClassConstant of Roave\BetterReflection\Reflection\Adapter\ReflectionClassConstant#__construct() changed from Roave\BetterReflection\Reflection\ReflectionClassConstant to Roave\BetterReflection\Reflection\ReflectionClassConstant|Roave\BetterReflection\Reflection\ReflectionEnumCase
[BC] CHANGED: Parameter 0 of Roave\BetterReflection\Reflection\Adapter\ReflectionClassConstant#__construct() changed name from betterClassConstant to betterClassConstantOrEnumCase
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClassConstant#getValue() changed from no type to mixed
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClassConstant#getDocComment() changed from no type to string|false
[BC] CHANGED: Class Roave\BetterReflection\Reflection\Adapter\ReflectionClass became final
[BC] REMOVED: Method Roave\BetterReflection\Reflection\Adapter\ReflectionClass::export() was removed
[BC] CHANGED: The parameter $betterReflectionClass of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#__construct() changed from Roave\BetterReflection\Reflection\ReflectionClass to Roave\BetterReflection\Reflection\ReflectionClass|Roave\BetterReflection\Reflection\ReflectionEnum
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#__toString() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#__get() changed from no type to mixed
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#__get() changed from no type to a non-contravariant string
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#__get() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getName() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#isAnonymous() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#isInternal() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#isUserDefined() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#isInstantiable() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#isCloneable() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getFileName() changed from no type to string|false
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getStartLine() changed from no type to int|false
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getEndLine() changed from no type to int|false
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getDocComment() changed from no type to string|false
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getConstructor() changed from no type to ReflectionMethod|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#hasMethod() changed from no type to bool
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#hasMethod() changed from no type to a non-contravariant string
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#hasMethod() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getMethod() changed from no type to Roave\BetterReflection\Reflection\Adapter\ReflectionMethod
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getMethod() changed from no type to a non-contravariant string
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getMethod() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getMethods() changed from no type to array
[BC] CHANGED: The parameter $filter of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getMethods() changed from no type to a non-contravariant int|null
[BC] CHANGED: The parameter $filter of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getMethods() changed from no type to int|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#hasProperty() changed from no type to bool
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#hasProperty() changed from no type to a non-contravariant string
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#hasProperty() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getProperty() changed from no type to Roave\BetterReflection\Reflection\Adapter\ReflectionProperty
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getProperty() changed from no type to a non-contravariant string
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getProperty() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getProperties() changed from no type to array
[BC] CHANGED: The parameter $filter of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getProperties() changed from no type to a non-contravariant int|null
[BC] CHANGED: The parameter $filter of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getProperties() changed from no type to int|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#hasConstant() changed from no type to bool
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#hasConstant() changed from no type to a non-contravariant string
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#hasConstant() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getConstants() changed from no type to array
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getConstant() changed from no type to mixed
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getConstant() changed from no type to a non-contravariant string
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getConstant() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getReflectionConstant() changed from no type to Roave\BetterReflection\Reflection\Adapter\ReflectionClassConstant|false
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getReflectionConstant() changed from no type to a non-contravariant string
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getReflectionConstant() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getReflectionConstants() changed from no type to array
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getInterfaces() changed from no type to array
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getInterfaceNames() changed from no type to array
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#isInterface() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getTraits() changed from no type to array
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getTraitNames() changed from no type to array
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getTraitAliases() changed from no type to array
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#isTrait() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#isAbstract() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#isFinal() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getModifiers() changed from no type to int
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#isInstance() changed from no type to bool
[BC] CHANGED: The parameter $object of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#isInstance() changed from no type to a non-contravariant object
[BC] CHANGED: The parameter $object of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#isInstance() changed from no type to object
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#newInstance() changed from no type to self
[BC] CHANGED: The parameter $arg of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#newInstance() changed from no type to mixed
[BC] CHANGED: Parameter 0 of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#newInstance() changed name from arg to args
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#newInstanceWithoutConstructor() changed from no type to object
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#newInstanceArgs() changed from no type to object
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getParentClass() changed from no type to Roave\BetterReflection\Reflection\Adapter\ReflectionClass|false
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#isSubclassOf() changed from no type to bool
[BC] CHANGED: The parameter $class of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#isSubclassOf() changed from no type to a non-contravariant ReflectionClass|string
[BC] CHANGED: The parameter $class of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#isSubclassOf() changed from no type to ReflectionClass|string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getStaticProperties() changed from no type to array
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getStaticPropertyValue() changed from no type to mixed
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getStaticPropertyValue() changed from no type to a non-contravariant string
[BC] CHANGED: The parameter $default of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getStaticPropertyValue() changed from no type to a non-contravariant mixed|null
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getStaticPropertyValue() changed from no type to string
[BC] CHANGED: The parameter $default of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getStaticPropertyValue() changed from no type to mixed|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#setStaticPropertyValue() changed from no type to void
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#setStaticPropertyValue() changed from no type to a non-contravariant string
[BC] CHANGED: The parameter $name of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#setStaticPropertyValue() changed from no type to string
[BC] CHANGED: The parameter $value of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#setStaticPropertyValue() changed from no type to mixed
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getDefaultProperties() changed from no type to array
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#isIterateable() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#implementsInterface() changed from no type to bool
[BC] CHANGED: The parameter $interface of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#implementsInterface() changed from no type to a non-contravariant ReflectionClass|string
[BC] CHANGED: The parameter $interface of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#implementsInterface() changed from no type to ReflectionClass|string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getExtension() changed from no type to ReflectionExtension|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getExtensionName() changed from no type to string|false
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#inNamespace() changed from no type to bool
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getNamespaceName() changed from no type to string
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\Adapter\ReflectionClass#getShortName() changed from no type to string
[BC] CHANGED: The return type of ReflectionClass#isIterable() changed from no type to bool
[BC] REMOVED: Method Roave\BetterReflection\NodeCompiler\CompilerContext#hasSelf() was removed
[BC] REMOVED: Method Roave\BetterReflection\NodeCompiler\CompilerContext#getSelf() was removed
[BC] CHANGED: Roave\BetterReflection\NodeCompiler\CompilerContext was marked "@internal"
[BC] CHANGED: The parameter $self of Roave\BetterReflection\NodeCompiler\CompilerContext#__construct() changed from Roave\BetterReflection\Reflection\ReflectionClass|null to a non-contravariant Roave\BetterReflection\Reflection\ReflectionClass|Roave\BetterReflection\Reflection\ReflectionProperty|Roave\BetterReflection\Reflection\ReflectionClassConstant|Roave\BetterReflection\Reflection\ReflectionEnumCase|Roave\BetterReflection\Reflection\ReflectionMethod|Roave\BetterReflection\Reflection\ReflectionFunction|Roave\BetterReflection\Reflection\ReflectionParameter|Roave\BetterReflection\Reflection\ReflectionConstant
[BC] CHANGED: The parameter $self of Roave\BetterReflection\NodeCompiler\CompilerContext#__construct() changed from Roave\BetterReflection\Reflection\ReflectionClass|null to Roave\BetterReflection\Reflection\ReflectionClass|Roave\BetterReflection\Reflection\ReflectionProperty|Roave\BetterReflection\Reflection\ReflectionClassConstant|Roave\BetterReflection\Reflection\ReflectionEnumCase|Roave\BetterReflection\Reflection\ReflectionMethod|Roave\BetterReflection\Reflection\ReflectionFunction|Roave\BetterReflection\Reflection\ReflectionParameter|Roave\BetterReflection\Reflection\ReflectionConstant
[BC] CHANGED: Parameter 1 of Roave\BetterReflection\NodeCompiler\CompilerContext#__construct() changed name from self to contextReflection
[BC] CHANGED: The return type of Roave\BetterReflection\NodeCompiler\CompilerContext#getFileName() changed from string to the non-covariant string|null
[BC] CHANGED: The return type of Roave\BetterReflection\NodeCompiler\CompilerContext#getFileName() changed from string to string|null
[BC] CHANGED: Roave\BetterReflection\NodeCompiler\CompileNodeToValue was marked "@internal"
[BC] CHANGED: The return type of Roave\BetterReflection\NodeCompiler\CompileNodeToValue#__invoke() changed from no type to Roave\BetterReflection\NodeCompiler\CompiledValue
[BC] CHANGED: Roave\BetterReflection\NodeCompiler\Exception\UnableToCompileNode was marked "@internal"
[BC] CHANGED: The number of required arguments for Roave\BetterReflection\NodeCompiler\Exception\UnableToCompileNode::becauseOfNotFoundConstantReference() increased from 2 to 3
[BC] REMOVED: Method Roave\BetterReflection\Identifier\IdentifierType#isMatchingReflector() was removed
5.0.0
- Total issues resolved: 31
- Total pull requests resolved: 163
- Total contributors: 20
dependencies,enhancement
- 926: Use composer 2.1 for tests temporarily thanks to @kukulich
- 925: Updated locked dependencies thanks to @kukulich
- 924: Simplified
continuous-integration.yml
withramsey/composer-install@v2
thanks to @kukulich - 903: Bump vimeo/psalm to 4.14.0 thanks to @kukulich
- 893: Bump nikic/php-parser to 4.13.2 thanks to @kukulich
- 874: Always require PHP version for
PhpStormStubsSourceStubber
-PHP_VERSION_ID
as default thanks to @kukulich - 857: Run coverage and mutation tests all at once thanks to @kukulich
- 845: Updated dependencies thanks to @kukulich
- 833: Bump phpstan/phpstan to 1.0.0 thanks to @kukulich
- 826: Updated dependencies thanks to @kukulich
- 774: remove expired "extra" field in composer.json thanks to @sasezaki
- 768: Bump phpdocumentor/type-resolver to 1.5.0 thanks to @kukulich
- 767: PHP 8.1: Installation and green build thanks to @kukulich
- 726: Upgrade PHPStorm Stubs thanks to @michaeljoelphillips
- 721: Add missing methods to ReflectionObject adapter thanks to @michaeljoelphillips
- 713: PHP8 - Add support for
mixed
andstatic
types thanks to @michaeljoelphillips and @ondrejmirtes - 712: PHP8 - Adapter Signatures Compatibility thanks to @michaeljoelphillips and @ondrejmirtes
- 679: ReflectionClass:getConstants() signature has changed in PHP 8 thanks to @TRowbotham
- 620: #609 re-introduce PHPStan checking of the
PhpStormStubsSourceStubber
once PHPStan 0.12.26 is out thanks to @Ocramius - 603: PhpStormStubsSourceStubber can support filtering identifiers based on given PHP version thanks to @kukulich
bug
- 923: Enum can implement interface thanks to @kukulich
- 918: Fixed adapter
ReflectionClassConstant::getValue()
for enum cases thanks to @kukulich - 910:
PhpStormStubsSourceStubber
should add uses from current namespace to the stub thanks to @kukulich - 902: Ensure that simple union types like
A|null
yield a nullableReflectionNamedType
thanks to @Ocramius - 881: Fixed parameter and return types of default enum methods thanks to @kukulich
- 880: Promoted property with a default value does not have a default value - the default value is on the parameter only thanks to @ondrejmirtes
- 879: Fixed type of
value
property for integer backed enum thanks to @kukulich - 866: Try to fix auto-merge for dependatbot PR's thanks to @DanielBadura
- 844: Fixed
AutoloadSourceLocatorTest::testCanAutoloadPsr4ClassesInPotentiallyMultipleDirectories()
autoloading of PHPUnit assertion classes thanks to @kukulich - 840: Use native
assert()
instead ofWebmozart\Assert\Assert
, which is not an explicit dependency thanks to @kukulich - 834: Fix parameters used when instantiating a reflector in code examples/docs thanks to @villfa
- 823: Fixed
ReflectionFunctionAbstract::createReturnType()
return type hint thanks to @kukulich and @Ocramius - 762: Trait case sensitivity and aliasing collision fixes thanks to @kukulich
- 756: Fixed parsing closures with types in namespace thanks to @kukulich
- 720: Merge release 4.12.2 into 4.13.x thanks to @github-actions[bot]
- 717: Merge release 4.12.1 into 4.13.x thanks to @github-actions[bot]
- 665: FIX: ReflectionClass::getImmediateInterfaces fails on anonymous classes thanks to @smoench
- 663: Changed trait method visibility is not taken into account thanks to @ondrejmirtes
- 519: Crash when asking for default value of LevelDB::__construct() $options parameter thanks to @ondrejmirtes
- 505: fix anonymous class getParentClass thanks to @sidux
- 429: Errors and Fatals when running unit test with process isolation thanks to @jenschude
enhancement
- 922: Add
ReflectionFunctionAbstract::couldThrow()
thanks to @WinterSilence - 921: Update features.md to highlight that docblocks are bo longer analyzed thanks to @WinterSilence
- 911: Increased minimum mutation score to 95 % thanks to @kukulich
- 907: Revert "Removed support for PHP4 style constructors" thanks to @kukulich
- 906: Added some missing return type hints thanks to @kukulich
- 904: Last call for
5.0.0
BC breaks thanks to @Ocramius - 898: We should add
Stringable
interface only when it can be reflected thanks to @kukulich - 897: Removed traling spaces thanks to @kukulich
- 895: Fixed missing assigment (for memoization) in
FileIteratorSourceLocator
thanks to @kukulich - 886: Added some native parameter type hints thanks to @kukulich
- 885: .editorconfig thanks to @ondrejmirtes
- 876: jetbrains/phpstorm-stubs 2021.3 thanks to @kukulich
- 867: Try to fix the "Auto-merge Dependabot PRs" workflow again thanks to @kukulich
- 865: Automerge Dependebot PR thanks to @kukulich
- 863: Just another try to fix of "Auto-merge Dependabot PRs" workflow thanks to @kukulich
- 862: Fixed "Auto-merge Dependabot PRs" workflow thanks to @kukulich
- 860: Small code improvements thanks to @kukulich
- 858: Removed dead condition thanks to @kukulich
- 855: Split PhpStormStubs caching visitor to separate class thanks to @kukulich
- 854: No more Psalm baseline thanks to @kukulich
- 853: Infection should skip initial tests because we already provide coverage thanks to @kukulich
- 852: Improved mutation score thanks to @kukulich
- 851: Don't ignore Psalm
MoreSpecificReturnType
andLessSpecificReturnStatement
errors anymore thanks to @kukulich - 850: Don't ignore Psalm
NullableReturnStatement
andInvalidNullableReturnType
errors anymore thanks to @kukulich - 849: Don't ignore Psalm
PossiblyNullArgument
errors anymore thanks to @kukulich - 848: Less ignored errors in Psalm thanks to @kukulich
- 847: Improved detection if parameter is optional thanks to @kukulich
- 846: Automating dependency upgrades and merges thereof thanks to @kukulich
- 843: Increased minimum mutation score to 94% thanks to @kukulich
- 841: Improved mutation score thanks to @kukulich
- 839: Improved code coverage for reflections thanks to @kukulich
- 837: Bump phpstan/phpstan to 1.1.1 thanks to @kukulich
- 836: Added
ReflectionNamedType::getClass()
thanks to @kukulich - 835: Improved detection of supported functions in
PhpStormStubsSourceStubber
based onJetBrains\PhpStorm\Internal\PhpStormStubsElementAvailable
attribute to decide supported PHP versions thanks to @kukulich - 828: Refactor tests to expect exceptions closer to the throw site thanks to @kukulich
- 825: Enable zend.assertions=1 for code coverage thanks to @kukulich
- 821: Always ignore
Squiz.Commenting.FunctionComment.InvalidNoReturn
by PHPCS - covered by static analysis thanks to @kukulich - 816: Small optimization and cleanup around checking return types thanks to @kukulich
- 815: PHP 8.1: Implemented
ReflectionFunction::isStatic()
thanks to @kukulich - 812: PHP 8.1:
never
builtin type thanks to @kukulich - 811: PHP 8.1: Readonly properties thanks to @kukulich
- 810: Stricter/smaller types for some internal BetterReflection symbols thanks to @kukulich
- 790: Improved precision of declared types in internal code and exposed return values thanks to @kukulich
- 788: Simplified
CompilerContext
internals, making it compatible with more reflection symbols thanks to @kukulich - 784: Types, tests, cleanup and code coverage thanks to @kukulich
- 783: Use
is_file()
instead offile_exists()
when we need to be sure that the checked locations are files, and not directories thanks to @kukulich - 781: Removed dead code / unused psalm error suppressions thanks to @kukulich
- 780: Properties types are rendered by
ReflectionProperty#__toString()
thanks to @kukulich - 777: Use
is_file()
instead offile_exists()
because we really need to check only files thanks to @kukulich - 770: Implemented
Stringable
interface thanks to @kukulich - 769: Added all missing methods to adapters and fixed tests thanks to @kukulich
- 766: Reduce
CompilerContext
API to avoid temporal coupling of method calls thanks to @kukulich - 765: Adapter
ReflectionProperty
: AddedhasDefaultValue()
andgetDefaultValue()
thanks to @kukulich - 764: It's possible to get default parameter value for internal methods/functions in PHP 8 thanks to @kukulich
- 763: expand
CompileNodeToValue
to support magic constants in functions, traits and constant declarations thanks to @kukulich and @Ocramius - 760: PHPStan level 6 thanks to @kukulich
- 758: Added support for passing
ReflectionClass
andReflectionObject
instances toisSubclassOf
andimplementsInterface
thanks to @kukulich - 757: Support of arrow functions thanks to @kukulich
- 754: Don't ignore <MissingImmutableAnnotation errorLevel="suppress" /> by Psalm thanks to @kukulich
- 753: Coding standard with PHP 8 features thanks to @kukulich
- 750: Make existing tests / static analysis pass on PHP 8.0.x thanks to @kukulich
- 742: Use repeatable cache key from
spl_object_id()
instead ofspl_object_hash()
to reduce memory overhead thanks to @mvorisek
bug,dependencies
- 920: composer.json compatible with Composer 2.2 thanks to @kukulich
- 875: Fixed parsing of
PhpStormStubsElementAvailable
inPhpStormStubsSourceStubber
thanks to @kukulich - 658: BetterReflection says method Generator::throw() does not exist thanks to @ondrejmirtes
dependencies,php
- 909: Bump phpunit/php-code-coverage from 9.2.9 to 9.2.10 thanks to @dependabot[bot]
- 872: Bump vimeo/psalm from 4.12.0 to 4.13.0 thanks to @dependabot[bot] and @ondrejmirtes
- 871: Bump symfony/service-contracts from 2.4.0 to 2.5.0 thanks to @dependabot[bot]
- 870: Bump symfony/deprecation-contracts from 2.4.0 to 2.5.0 thanks to @dependabot[bot]
- 869: Bump symfony/process from 5.3.7 to 5.3.11 thanks to @dependabot[bot]
- 868: Bump symfony/console from 5.3.10 to 5.3.11 thanks to @dependabot[bot]
- 864: Bump phpunit/php-code-coverage from 9.2.8 to 9.2.9 thanks to @dependabot[bot]
- 861: Bump phpstan/phpstan from 1.1.2 to 1.2.0 thanks to @dependabot[bot]
BC break,enhancement
- 908: Removed the ability to monkey patch the code thanks to @kukulich
- 905: Support
resource
as constant value, makeSTDIN
,STDOUT
andSTDERR
stubs actualresource
s thanks to @kukulich - 859: Removed
\Roave\BetterReflection\Identifier\IdentifierType::isMatchingReflector()
thanks to @kukulich - 838:
ReflectionMethod
andReflectionFunction
no longer extendReflectionFunctionAbstract
thanks to @kukulich - 831: Replaced
ReflectionType::createFromTypeAndReflector()
withReflectionType::createFromNode()
thanks to @kukulich - 772: One reflector to rule them all thanks to @kukulich
- 771: By default, configure PHP-Parser to always consider sources as if they were PHP 7+ thanks to @kukulich
- 759: Removed support of PHP4 style constructors thanks to @kukulich
- 755: Narrower types for reflection functions and internal source stubber logic thanks to @kukulich
- 752: Split
ReflectionType
intoReflectionNamedType|ReflectionNamedType
in parameter and return types thanks to @WyriHaximus and @ondrejmirtes
BC break,dependencies,enhancement
enhancement,reflection compatibility
- 883: Support promoted properties docblocks and attributes thanks to @kukulich
- 856:
ReflectionSourceStubber
improvements around enum types thanks to @kukulich - 842: Improved mutation score, reject invalid flags when retrieving attributes thanks to @kukulich
- 832: Improved code coverage of adapters thanks to @kukulich
- 829: Fixed missing
Stringable
interface in the list retrieved byReflectionClass::getImmediateInterfaces()
thanks to @kukulich - 827: PHP 8.1: Enums thanks to @kukulich and @Ocramius
- 822: Improved tentative return types from
ReflectionSourceStubber
to make sure return types are not declared when they are only "tentative" - see https://wiki.php.net/rfc/internal_method_return_types thanks to @kukulich - 819: PHP 8.1: Implemented
new
in initializers thanks to @kukulich - 818: PHP 8.1: Intersection types thanks to @kukulich
- 817: PHP 8.1: Implemented
ReflectionMethod
/ReflectionFunction::hasTentativeReturnType()
andgetTentativeReturnType()
thanks to @kukulich - 814: PHP 8.1: Implemented
ReflectionClassConstant::isFinal()
thanks to @kukulich - 813: PHP 8.1: Implemented
ReflectionClass::isEnum()
andReflectionObject::isEnum()
thanks to @kukulich - 787: Added attributes support thanks to @kukulich
- 786: Implemented
ReflectionProperty#isInitialized()
thanks to @kukulich - 785: Promoted properties support thanks to @kukulich
dependencies,enhancement,php
- 882: No need to force PHP version update anymore thanks to @kukulich
- 873: JetBrains/phpstorm-stubs 2021.3 thanks to @kukulich
bug,reflection compatibility
- 830: Fixed
Reflection*#__toString()
for methods/functions with a declared return type thanks to @kukulich
enhancement,hacktoberfest-accepted
- 820: Removed some
@psalm
annotatons thanks to @kukulich - 808: Faster builds by avoiding
pcov
installation when not needed thanks to @kukulich - 805: Added missing tests for
ReflectionParameter::getClass()
on union types involving classes thanks to @kukulich - 802:
AutoloadSourceLocator
now supports class aliases thanks to @kukulich - 801: Improved "deprecated" support to work with internal classes and PHP version constraints thanks to @kukulich
- 800: Removed dead code thanks to @kukulich
- 798: It's possible to filter PHPStorm stubs by PHP version thanks to @kukulich
- 797: Fixed method names in adapters tests thanks to @kukulich
- 796: Improved constants resolving to support constants declared on traits and outside classes thanks to @kukulich
- 794: Change
push:
rule branch frommaster
to5.0.x
in workflow definitions thanks to @sasezaki - 793: Update infection badge target branch to 5.0.x thanks to @sasezaki
dependencies,enhancement,hacktoberfest-accepted
- 809: PhpStormStubsSourceStubber:
@since
and@removed
annotations in some cases do not contain a PHP version, but an extension version - e.g. "@since 1.3.0" thanks to @kukulich
hacktoberfest-accepted
- 807: The resolving of constant name and constant value is now always done in
CompileNodeToValue
thanks to @kukulich
bug,enhancement,hacktoberfest-accepted
- 804: Fixed
ReflectionParameter::allowsNull()
for union types thanks to @kukulich - 803: Fixed
ReflectionParameter::isArray()
andisCallable()
to handle union types thanks to @kukulich
bug,hacktoberfest-accepted
- 799: Fix
ReflectionMethod#invoke()
and related methods when trait imports are involved thanks to @kukulich
bug,duplicate,needs more info
bug,invalid,needs more info
- 791: Result of
BetterReflection\ReflectionParameter::isDefaultValueAvailable()
not similar to\ReflectionParameter::isDefaultValueAvailable()
thanks to @WinterSilence
bug,enhancement
- 782: More tests for anonymous classes inheritance reflection thanks to @kukulich and @sidux
- 778: Make sure that
PhpStormStubsSourceStubber
updates constants based on current runtime environment, when outdated or not defined in stubs thanks to @kukulich - 761: Fixed
PhpStormStubsSourceStubber
forGenerator#throw()
thanks to @kukulich
dependencies
- 775: Updated dependencies thanks to @kukulich
- 736: Upgrade to GitHub-native Dependabot thanks to @dependabot-preview[bot]
- 731: Bump phpunit/phpunit from 9.5.0 to 9.5.1 thanks to @dependabot-preview[bot]
- 728: Bump roave/signature from 1.3.0 to 1.4.0 thanks to @dependabot-preview[bot]
dependencies,duplicate
- 749: Bump phpunit/phpunit from 9.5.4 to 9.5.6 thanks to @dependabot-preview[bot]
- 748: Bump phpstan/phpstan from 0.12.25 to 0.12.90 thanks to @dependabot-preview[bot] and @sidux
- 745: Bump nikic/php-parser from 4.10.4 to 4.10.5 thanks to @dependabot-preview[bot]
- 744: Bump vimeo/psalm from 4.2.1 to 4.7.2 thanks to @dependabot-preview[bot]
- 741: Bump jetbrains/phpstorm-stubs from 2020.2 to 2021.1 thanks to @dependabot-preview[bot]
- 737: Bump doctrine/coding-standard from 8.2.0 to 9.0.0 thanks to @dependabot-preview[bot]
- 707: Bump jetbrains/phpstorm-stubs from 2019.3 to 2020.2 thanks to @dependabot-preview[bot] and @Ocramius
bug,easypick
- 428: Undefined property: Roave\BetterReflection\Reflection\ReflectionClass::$cachedMethods thanks to @jenschude