The ReflectionProperty class

(PHP 5, PHP 7, PHP 8)

Вступ

The ReflectionProperty class reports information about class properties.

Короткий огляд класу

class ReflectionProperty implements Reflector {
/* Константи */
public const int IS_STATIC;
public const int IS_READONLY;
public const int IS_PUBLIC;
public const int IS_PROTECTED;
public const int IS_PRIVATE;
/* Властивості */
public string $name;
public string $class;
/* Методи */
public __construct(object|string $class, string $property)
private __clone(): void
public static export(mixed $class, string $name, bool $return = ?): string
public getAttributes(?string $name = null, int $flags = 0): array
public getModifiers(): int
public getName(): string
public getValue(?object $object = null): mixed
public hasType(): bool
public isDefault(): bool
public isInitialized(?object $object = null): bool
public isPrivate(): bool
public isPromoted(): bool
public isProtected(): bool
public isPublic(): bool
public isReadOnly(): bool
public isStatic(): bool
public setAccessible(bool $accessible): void
public setValue(object $object, mixed $value): void
public __toString(): string
}

Властивості

name

Name of the property. Read-only, throws ReflectionException in attempt to write.

class

Name of the class where the property is defined. Read-only, throws ReflectionException in attempt to write.

Попередньо визначені константи

ReflectionProperty Modifiers

ReflectionProperty::IS_STATIC

Indicates static properties. Prior to PHP 7.4.0, the value was 1.

ReflectionProperty::IS_READONLY

Indicates readonly properties. Available as of PHP 8.1.0.

ReflectionProperty::IS_PUBLIC

Indicates public properties. Prior to PHP 7.4.0, the value was 256.

ReflectionProperty::IS_PROTECTED

Indicates protected properties. Prior to PHP 7.4.0, the value was 512.

ReflectionProperty::IS_PRIVATE

Indicates private properties. Prior to PHP 7.4.0, the value was 1024.

Зауваження:

The values of these constants may change between PHP versions. It is recommended to always use the constants and not rely on the values directly.

Журнал змін

Версія Опис
8.0.0 ReflectionProperty::export() was removed.

Зміст

add a note

User Contributed Notes 1 note

up
9
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...
To Top