ReflectionProperty 类
(PHP 5, PHP 7, PHP 8)
简介
ReflectionProperty 类报告有关类属性的信息。
类摘要
/* 常量 */
/* 属性 */
/* 方法 */
}属性
- name
-
属性名。只读,在尝试赋值的时候抛出 ReflectionException。
- class
-
定义的属性所在的类。只读,在尝试赋值的时候抛出 ReflectionException。
预定义常量
ReflectionProperty 修饰符
-
ReflectionProperty::IS_STATIC
int -
表示 static 属性。在 PHP 7.4.0 之前,值为
1
。 -
ReflectionProperty::IS_READONLY
int -
表示 readonly 属性。自 PHP 8.1.0 起可用。
-
ReflectionProperty::IS_PUBLIC
int -
表示 public 属性。在 PHP 7.4.0 之前,值为
256
。 -
ReflectionProperty::IS_PROTECTED
int -
表示 protected 属性。在 PHP 7.4.0 之前,值为
512
。 -
ReflectionProperty::IS_PRIVATE
int -
表示 private 属性。在 PHP 7.4.0 之前,值为
1024
。 -
ReflectionProperty::IS_ABSTRACT
int - 表示属性是 abstract。自 PHP 8.4.0 起可用。
-
ReflectionProperty::IS_PROTECTED_SET
int - 自 PHP 8.4.0 起可用。
-
ReflectionProperty::IS_PRIVATE_SET
int - 自 PHP 8.4.0 起可用。
-
ReflectionProperty::IS_VIRTUAL
int - 自 PHP 8.4.0 起可用。
-
ReflectionProperty::IS_FINAL
int - 表示属性是 final。自 PHP 8.4.0 起可用。
注意:
这些常量的值可能会在不同 PHP 版本间发生更改。建议始终使用常量而不直接依赖值。
更新日志
版本 | 说明 |
---|---|
8.4.0 | 所有类常量现已类型化。 |
8.4.0 |
新增 ReflectionProperty::IS_VIRTUAL 、ReflectionProperty::IS_PRIVATE_SET 、ReflectionProperty::IS_PROTECTED_SET 、ReflectionProperty::IS_ABSTRACT ,
和 ReflectionProperty::IS_FINAL 。
|
8.0.0 | 已移除 ReflectionProperty::export()。 |
目录
- ReflectionProperty::__clone — Clone
- ReflectionProperty::__construct — Construct a ReflectionProperty object
- ReflectionProperty::export — Export
- ReflectionProperty::getAttributes — Gets Attributes
- ReflectionProperty::getDeclaringClass — Gets declaring class
- ReflectionProperty::getDefaultValue — Returns the default value declared for a property
- ReflectionProperty::getDocComment — Gets the property doc comment
- ReflectionProperty::getHook — Returns a reflection object for a specified hook
- ReflectionProperty::getHooks — Returns an array of all hooks on this property
- ReflectionProperty::getModifiers — Gets the property modifiers
- ReflectionProperty::getName — Gets property name
- ReflectionProperty::getRawValue — Returns the value of a property, bypassing a get hook if defined
- ReflectionProperty::getSettableType — Returns the parameter type of a setter hook
- ReflectionProperty::getType — Gets a property's type
- ReflectionProperty::getValue — Gets value
- ReflectionProperty::hasDefaultValue — Checks if property has a default value declared
- ReflectionProperty::hasHook — Returns whether the property has a given hook defined
- ReflectionProperty::hasHooks — Returns whether the property has any hooks defined
- ReflectionProperty::hasType — Checks if property has a type
- ReflectionProperty::isAbstract — Determines if a property is abstract
- ReflectionProperty::isDefault — Checks if property is a default property
- ReflectionProperty::isDynamic — Checks if property is a dynamic property
- ReflectionProperty::isFinal — Determines if this property is final or not
- ReflectionProperty::isInitialized — Checks whether a property is initialized
- ReflectionProperty::isLazy — Checks whether a property is lazy
- ReflectionProperty::isPrivate — Checks if property is private
- ReflectionProperty::isPrivateSet — Checks if property is private for writing
- ReflectionProperty::isPromoted — Checks if property is promoted
- ReflectionProperty::isProtected — Checks if property is protected
- ReflectionProperty::isProtectedSet — Checks whether the property is protected for writing
- ReflectionProperty::isPublic — Checks if property is public
- ReflectionProperty::isReadOnly — 检查属性是否为只读
- ReflectionProperty::isStatic — Checks if property is static
- ReflectionProperty::isVirtual — Determines if a property is virtual
- ReflectionProperty::setAccessible — Set property accessibility
- ReflectionProperty::setRawValue — Sets the value of a property, bypassing a set hook if defined
- ReflectionProperty::setRawValueWithoutLazyInitialization — Set raw property value without triggering lazy initialization
- ReflectionProperty::setValue — Set property value
- ReflectionProperty::skipLazyInitialization — Marks property as non-lazy
- ReflectionProperty::__toString — To string
+添加备注
用户贡献的备注 1 note
rasmus at mindplay dot dk ¶
14 years ago
I think a more accurate explanation is this:
The Reflection classes are designed to reflect upon the source code of an application, not on any runtime information.
I think you misunderstand the ReflectionProperty constructor in your example above. The fact that it accepts an object as argument is just a convenience feature - you are actually inspecting the class of that object, not the object itself, so it's basically equivalent to:
<?php
// works fine
$Reflection = new ReflectionProperty(get_class($a), 'a');
// throws exception
$Reflection = new ReflectionProperty(get_class($a), 'foo');
?>
Getting the class of the object you're passing in is implied, since inspecting a defined property is the purpose of this class.
In your example, $a->foo is a dynamic member - it is not defined as a member of class, so there is no defining class reference, line number, default value, etc. - which means, there is nothing to reflect upon.
Clearly this very useful library could use some real documentation...
备份地址:http://www.lvesu.com/blog/php/class.reflectionproperty.php