(PHP 5, PHP 7, PHP 8)
The ReflectionClass class reports information about a class.
Name of the class. Read-only, throws ReflectionException in attempt to write.
ReflectionClass::IS_IMPLICIT_ABSTRACT
int
Indicates the class is abstract because it has some abstract methods.
ReflectionClass::IS_EXPLICIT_ABSTRACT
int
Indicates the class is abstract because of its definition.
ReflectionClass::IS_FINAL
int
Indicates the class is final.
ReflectionClass::IS_READONLY
int
Indicates the class is readonly.
ReflectionClass::SKIP_INITIALIZATION_ON_SERIALIZE
int
ReflectionClass::SKIP_DESTRUCTOR
int
Version | Description |
---|---|
8.4.0 | The class constants are now typed. |
8.0.0 | ReflectionClass::export() was removed. |
To reflect on a namespaced class in PHP 5.3, you must always specify the fully qualified name of the class - even if you've aliased the containing namespace using a "use" statement.
So instead of:
<?php
use App\Core as Core;
$oReflectionClass = new ReflectionClass('Core\Singleton');
?>
You would type:
<?php
use App\Core as Core;
$oReflectionClass = new ReflectionClass('App\Core\Singleton');
?>
Unserialized reflection class cause error.
<?php
/**
* abc
*/
class a{}
$ref = new ReflectionClass('a');
$ref = unserialize(serialize($ref));
var_dump($ref);
var_dump($ref->getDocComment());
// object(ReflectionClass)#2 (1) {
// ["name"]=>
// string(1) "a"
// }
// PHP Fatal error: ReflectionClass::getDocComment(): Internal error: Failed to retrieve the reflection object
?>
Reflecting an alias will give you a reflection of the resolved class.
<?php
class X {
}
class_alias('X','Y');
class_alias('Y','Z');
$z = new ReflectionClass('Z');
echo $z->getName(); // X
?>
In order to get class attributes look here (php8)
https://www.php.net/manual/en/language.attributes.reflection.php