ReflectionClass 类
(PHP 5, PHP 7, PHP 8)
简介
ReflectionClass 类报告了一个类的有关信息。
类摘要
/* 常量 */
/* 属性 */
/* 方法 */
}属性
- name
-
类名。只读,尝试赋值时抛出 ReflectionException。
预定义常量
ReflectionClass 修饰符
-
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 - 表示 serialize() 不应触发延迟对象的初始化。
-
ReflectionClass::SKIP_DESTRUCTOR
int - 表示将对象重置为延迟时不应调用对象析构方法。
更新日志
版本 | 说明 |
---|---|
8.4.0 | 所有类常量现已类型化。 |
8.0.0 | 移除 ReflectionClass::export()。 |
目录
- ReflectionClass::__construct — 初始化 ReflectionClass 类
- ReflectionClass::export — 导出类
- ReflectionClass::getAttributes — 获取所有属性
- ReflectionClass::getConstant — 获取已定义的常量
- ReflectionClass::getConstants — 获取常量
- ReflectionClass::getConstructor — 获取类的构造函数
- ReflectionClass::getDefaultProperties — 获取默认属性
- ReflectionClass::getDocComment — 获取文档注释
- ReflectionClass::getEndLine — 获取最后一行的行数
- ReflectionClass::getExtension — 根据已定义的类获取所在扩展的 ReflectionExtension 对象
- ReflectionClass::getExtensionName — 获取定义的类所在的扩展的名称
- ReflectionClass::getFileName — 获取定义类的文件名
- ReflectionClass::getInterfaceNames — 获取接口(interface)名称
- ReflectionClass::getInterfaces — 获取接口
- ReflectionClass::getLazyInitializer — Gets lazy initializer
- ReflectionClass::getMethod — 获取类方法的 ReflectionMethod
- ReflectionClass::getMethods — 获取方法的数组
- ReflectionClass::getModifiers — 获取类的修饰符
- ReflectionClass::getName — 获取类名
- ReflectionClass::getNamespaceName — 获取命名空间的名称
- ReflectionClass::getParentClass — 获取父类
- ReflectionClass::getProperties — 获取属性
- ReflectionClass::getProperty — 获取类的一个属性的 ReflectionProperty
- ReflectionClass::getReflectionConstant — Gets a ReflectionClassConstant for a class's constant
- ReflectionClass::getReflectionConstants — Gets class constants
- ReflectionClass::getShortName — 获取短名
- ReflectionClass::getStartLine — 获取起始行号
- ReflectionClass::getStaticProperties — 获取静态(static)属性
- ReflectionClass::getStaticPropertyValue — 获取静态(static)属性的值
- ReflectionClass::getTraitAliases — 返回 trait 别名数组
- ReflectionClass::getTraitNames — 返回这个类所使用 traits 的名称的数组
- ReflectionClass::getTraits — 返回这个类所使用的 traits 数组
- ReflectionClass::hasConstant — 检查常量是否已经定义
- ReflectionClass::hasMethod — 检查方法是否已定义
- ReflectionClass::hasProperty — 检查属性是否已定义
- ReflectionClass::implementsInterface — 实现接口
- ReflectionClass::initializeLazyObject — Forces initialization of a lazy object
- ReflectionClass::inNamespace — 检查是否位于命名空间中
- ReflectionClass::isAbstract — 检查类是否是抽象类(abstract)
- ReflectionClass::isAnonymous — 检查类是否是匿名类
- ReflectionClass::isCloneable — 返回了一个类是否可复制
- ReflectionClass::isEnum — Returns whether this is an enum
- ReflectionClass::isFinal — 检查类是否声明为 final
- ReflectionClass::isInstance — 检查类的实例
- ReflectionClass::isInstantiable — 检查类是否可实例化
- ReflectionClass::isInterface — 检查类是否是一个接口(interface)
- ReflectionClass::isInternal — 检查类是否由扩展或核心在内部定义
- ReflectionClass::isIterable — Check whether this class is iterable
- ReflectionClass::isIterateable — 别名 ReflectionClass::isIterable
- ReflectionClass::isReadOnly — Checks if class is readonly
- ReflectionClass::isSubclassOf — 检查是否为子类
- ReflectionClass::isTrait — 返回了是否是 trait
- ReflectionClass::isUninitializedLazyObject — Checks if an object is lazy and uninitialized
- ReflectionClass::isUserDefined — 检查是否由用户定义的
- ReflectionClass::markLazyObjectAsInitialized — Marks a lazy object as initialized without calling the initializer or factory
- ReflectionClass::newInstance — 从指定的参数创建新类实例
- ReflectionClass::newInstanceArgs — 从给出的参数创建一个新的类实例
- ReflectionClass::newInstanceWithoutConstructor — 创建新的类实例而不调用它的构造函数
- ReflectionClass::newLazyGhost — Creates a new lazy ghost instance
- ReflectionClass::newLazyProxy — Creates a new lazy proxy instance
- ReflectionClass::resetAsLazyGhost — Resets an object and marks it as lazy
- ReflectionClass::resetAsLazyProxy — Resets an object and marks it as lazy
- ReflectionClass::setStaticPropertyValue — 设置静态属性的值
- ReflectionClass::__toString — 返回 ReflectionClass 对象字符串的表示形式
+添加备注
用户贡献的备注 4 notes
danbettles at yahoo dot co dot uk ¶
15 years ago
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');
?>
Anonymous ¶
13 years ago
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
?>
Anonymous ¶
11 years ago
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
?>
featherbits ¶
4 years ago
In order to get class attributes look here (php8)
https://www.php.net/manual/en/language.attributes.reflection.php
备份地址:http://www.lvesu.com/blog/php/class.reflectionclass.php