(PHP 5, PHP 7, PHP 8)
ReflectionClass 类报告了一个类的有关信息。
类名。只读,尝试赋值时抛出 ReflectionException 。
ReflectionClass::IS_IMPLICIT_ABSTRACT
int
表示该类是 abstract,因为有一些抽象方法。
ReflectionClass::IS_EXPLICIT_ABSTRACT
int
表示该类是 abstract,因为已明确定义。
ReflectionClass::IS_FINAL
int
表示该类是 final。
ReflectionClass::IS_READONLY
int
表示该类是 readonly。
ReflectionClass::SKIP_INITIALIZATION_ON_SERIALIZE
int
ReflectionClass::SKIP_DESTRUCTOR
int
| 版本 | 说明 |
|---|---|
| 8.4.0 | 所有类常量现已类型化。 |
| 8.0.0 | 移除 ReflectionClass::export() 。 |
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