Better Reflection is a reflection API that aims to improve and provide more features than PHP's built-in reflection API.
MIT License
Bot releases are hidden (Show)
Published by Ocramius 11 months ago
Feature release (minor)
ReflectionSourceStubber
supports types class constants thanks to @kukulichPublished by Ocramius about 1 year ago
Feature release (minor)
Published by Ocramius about 1 year ago
Feature release (minor)
Published by Ocramius about 1 year ago
Feature release (minor)
ReflectionClass#getTraitClassNames()
thanks to @staabmReflectionClass#getInterfaceClassNames()
thanks to @staabmPublished by Ocramius about 1 year ago
Feature release (minor)
ReflectionClass->getParentClassName()
thanks to @clxmstaabPublished by Ocramius over 1 year ago
Feature release (minor)
assertReadableFile()
check thanks to @staabmPublished by Ocramius over 1 year ago
Feature release (minor)
iterable
is really no interface thanks to @kukulichPublished by Ocramius over 1 year ago
Feature release (minor)
@internal
thanks to @shyimPublished by Ocramius over 1 year ago
Feature release (minor)
Expecting E_WARNING and E_USER_WARNING is deprecated and will no longer be possible in PHPUnit 10.
thanks to @kukulichPublished by Ocramius almost 2 years ago
Feature release (minor)
@requires
thanks to @kukulichPublished by Ocramius almost 2 years ago
6.4.x bugfix release (patch)
ReflectionMethod::getStartLine()
and getEndLine()
when code location is missing thanks to @kukulichPublished by Ocramius almost 2 years ago
Feature release (minor)
ReflectionClass::getName()
for anonymous classes thanks to @kukulich and @lulcoPublished by Ocramius about 2 years ago
Feature release (minor)
Reflection*::getStartLine()/getEndLine()/getStartColumn()/getEndColumn()
throws \Roave\BetterReflection\Reflection\Exception\CodeLocationMissing
instead of \RuntimeException
thanks to @kukulich and @OcramiusReflectionClass::getProperties()
thanks to @kukulichPublished by Ocramius about 2 years ago
Feature release (minor)
Published by Ocramius about 2 years ago
Feature release (minor)
ReflectionClass
thanks to @kukulichStringable
interface does not implement Stringable
thanks to @herndlmPublished by Ocramius about 2 years ago
Backwards incompatible release (major)
Notable breakages:
[BC] CHANGED: Roave\BetterReflection\Reflection\ReflectionUnionType#getTypes() now returns a non-empty-list<ReflectionNamedType|ReflectionIntersectionType>, where it previously returned list<ReflectionNamedType>
[BC] CHANGED: Roave\BetterReflection\SourceLocator\Type\StringSourceLocator::__construct() parameter type changed from string to a non-contravariant non-empty-stringallowsNull
[BC] REMOVED: Class Roave\BetterReflection\Util\Autoload\ClassLoaderMethod\Exception\SignatureCheckFailed has been deleted
[BC] REMOVED: Class Roave\BetterReflection\Util\Autoload\ClassLoaderMethod\FileCacheLoader has been deleted
[BC] REMOVED: Class Roave\BetterReflection\Util\Autoload\ClassLoaderMethod\LoaderMethodInterface has been deleted
[BC] REMOVED: Class Roave\BetterReflection\Util\Autoload\ClassLoaderMethod\EvalLoader has been deleted
[BC] REMOVED: Class Roave\BetterReflection\Util\Autoload\Exception\FailedToLoadClass has been deleted
[BC] REMOVED: Class Roave\BetterReflection\Util\Autoload\Exception\ClassAlreadyRegistered has been deleted
[BC] REMOVED: Class Roave\BetterReflection\Util\Autoload\Exception\ClassAlreadyLoaded has been deleted
[BC] REMOVED: Class Roave\BetterReflection\Util\Autoload\ClassPrinter\ClassPrinterInterface has been deleted
[BC] REMOVED: Class Roave\BetterReflection\Util\Autoload\ClassPrinter\PhpParserPrinter has been deleted
[BC] REMOVED: Class Roave\BetterReflection\Util\Autoload\ClassLoader has been deleted
[BC] REMOVED: Method Roave\BetterReflection\Reflection\Adapter\ReflectionProperty#isAccessible() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionEnum#__construct() was removed
[BC] CHANGED: Method __construct() of class Roave\BetterReflection\Reflection\ReflectionEnum visibility reduced from protected to private
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionClass#__construct() was removed
[BC] CHANGED: Roave\BetterReflection\Reflection\ReflectionClass#__construct() was marked "@internal"
[BC] REMOVED: Class Roave\BetterReflection\SourceLocator\Exception\EmptyPhpSourceCode has been deleted
[BC] REMOVED: Property Roave\BetterReflection\Reflection\ReflectionType#$reflector was removed
[BC] REMOVED: Property Roave\BetterReflection\Reflection\ReflectionType#$owner was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionUnionType#__construct() was removed
[BC] CHANGED: Property Roave\BetterReflection\Reflection\ReflectionType#$reflector visibility reduced from protected to private
[BC] CHANGED: Property Roave\BetterReflection\Reflection\ReflectionType#$owner visibility reduced from protected to private
[BC] CHANGED: Roave\BetterReflection\Reflection\ReflectionUnionType#__construct() was marked "@internal"
[BC] REMOVED: Property Roave\BetterReflection\Reflection\ReflectionType#$reflector was removed
[BC] REMOVED: Property Roave\BetterReflection\Reflection\ReflectionType#$owner was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionNamedType#__construct() was removed
[BC] CHANGED: Property Roave\BetterReflection\Reflection\ReflectionType#$reflector visibility reduced from protected to private
[BC] CHANGED: Property Roave\BetterReflection\Reflection\ReflectionType#$owner visibility reduced from protected to private
[BC] CHANGED: Roave\BetterReflection\Reflection\ReflectionNamedType#__construct() was marked "@internal"
[BC] REMOVED: Property Roave\BetterReflection\Reflection\ReflectionType#$reflector was removed
[BC] REMOVED: Property Roave\BetterReflection\Reflection\ReflectionType#$owner was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionType#__construct() was removed
[BC] REMOVED: Property Roave\BetterReflection\Reflection\ReflectionType#$reflector was removed
[BC] REMOVED: Property Roave\BetterReflection\Reflection\ReflectionType#$owner was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionIntersectionType#__construct() was removed
[BC] CHANGED: Property Roave\BetterReflection\Reflection\ReflectionType#$reflector visibility reduced from protected to private
[BC] CHANGED: Property Roave\BetterReflection\Reflection\ReflectionType#$owner visibility reduced from protected to private
[BC] CHANGED: Roave\BetterReflection\Reflection\ReflectionIntersectionType#__construct() was marked "@internal"
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionEnum#__construct() was removed
[BC] CHANGED: Method __construct() of class Roave\BetterReflection\Reflection\ReflectionEnum visibility reduced from protected to private
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionClass#__construct() was removed
[BC] CHANGED: Roave\BetterReflection\Reflection\ReflectionClass#__construct() was marked "@internal"
[BC] CHANGED: The parameter $betterReflectionType of Roave\BetterReflection\Reflection\Adapter\ReflectionType::fromTypeOrNull() changed from Roave\BetterReflection\Reflection\ReflectionNamedType|Roave\BetterReflection\Reflection\ReflectionUnionType|Roave\BetterReflection\Reflection\ReflectionIntersectionType|null to Roave\BetterReflection\Reflection\ReflectionUnionType|Roave\BetterReflection\Reflection\ReflectionNamedType|Roave\BetterReflection\Reflection\ReflectionIntersectionType|null
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionParameter#isArray() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionParameter#isCallable() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionParameter#getClass() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionClass#getDeclaringNamespaceAst() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionObject#getDeclaringNamespaceAst() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionClass#getDeclaringNamespaceAst() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionParameter#getAst() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionEnumCase#getAst() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionConstant#getAst() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionProperty#getAst() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionProperty#getPositionInAst() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionProperty#__clone() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionClassConstant#getAst() was removed
[BC] REMOVED: Method Roave\BetterReflection\Reflection\ReflectionClassConstant#getPositionInAst() was removed
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#getNamespaceName() changed from string to the non-covariant string|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionFunctionAbstract#getNamespaceName() changed from string to string|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionClass#getNamespaceName() changed from string to the non-covariant string|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionClass#getNamespaceName() changed from string to string|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionObject#getNamespaceName() changed from string to the non-covariant string|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionObject#getNamespaceName() changed from string to string|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionMethod#getNamespaceName() changed from string to the non-covariant string|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionMethod#getNamespaceName() changed from string to string|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionConstant#getNamespaceName() changed from string to the non-covariant string|null
[BC] CHANGED: The return type of Roave\BetterReflection\Reflection\ReflectionConstant#getNamespaceName() change
ReflectionClass::getDefaultProperties()
thanks to @kukulichReflectionClass
thanks to @herndlmReflectionClass
thanks to @kukulichReflection*::getModifiers()
thanks to @kukulichnon-empty-string
thanks to @kukulichRequireExplicitAssertion
with enableIntegerRanges=true
and enableAdvancedStringTypes=true
thanks to @kukulichReflectionMethod::withCurrentClass()
thanks to @kukulichReflectionClass::getMethods()
compatible with other similar getters thanks to @kukulichint-mask-of
thanks to @kukulichReflectionClass::getMethod()
returns null when method does not exist thanks to @kukulichReflectionClass::getConstant()
, getConstants()
and getImmediateConstants()
more consistent with methods and properties methods thanks to @kukulichReflectionClass::getAst()
to prevent memory leaks thanks to @kukulich and @ondrejmirtesReflectionMethod::getAst()
, getBodyAst()
, getBodyCode()
and getReturnStatementsAst()
to prevent memory leaks thanks to @kukulichReflection*::getDocComment()
returns null when no doc comment thanks to @kukulichReflection*::getNamespaceName()
returns null when no namespace - namespace as empty string is implemented only in adapters thanks to @kukulichReflectionClassConstant::getAst()
to prevent memory leaks thanks to @kukulich and @ondrejmirtesReflectionProperty::getAst()
to prevent memory leaks thanks to @kukulich and @ondrejmirtesReflectionParameter::getAst()
to prevent memory leaks thanks to @kukulichReflectionParameter::getClass()
, ReflectionParameter::isArray()
and ReflectionParameter::isCallable()
implementations moved only to adapter thanks to @kukulichUtil\Autoload
thanks to @kukulichReflectionProperty::isAccessible()
in adapter thanks to @kukulichReflectionEnum::__construct()
can be private thanks to @kukulichStringSourceLocator
is forced to be built with a non-empty-string
thanks to @kukulich and @OcramiusReflectionNamedType::getClass()
for self
defined in trait thanks to @kukulich6.0.x
before releasing 6.0.0
thanks to @OcramiusPublished by Ocramius about 2 years ago
5.11.x bugfix release (patch)
Published by Ocramius about 2 years ago
Feature release (minor)