PHP 8.5.0 Alpha 1 available for testing

La clase ReflectionProperty

(PHP 5, PHP 7, PHP 8)

Introducción

La clase ReflectionProperty proporciona información sobre las propiedades de las clases.

Sinopsis de la Clase

class ReflectionProperty implements Reflector {
/* Constantes */
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 const int IS_ABSTRACT;
public const int IS_PROTECTED_SET;
public const int IS_PRIVATE_SET;
public const int IS_VIRTUAL;
public const int IS_FINAL;
/* Propiedades */
public string $name;
public string $class;
/* Métodos */
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 getHooks(): array
public getModifiers(): int
public getName(): string
public getRawValue(object $object): mixed
public getValue(?object $object = null): mixed
public hasHooks(): bool
public hasType(): bool
public isAbstract(): bool
public isDefault(): bool
public isDynamic(): bool
public isFinal(): bool
public isInitialized(?object $object = null): bool
public isLazy(object $object): bool
public isPrivate(): bool
public isPrivateSet(): bool
public isPromoted(): bool
public isProtected(): bool
public isPublic(): bool
public isReadOnly(): bool
public isStatic(): bool
public isVirtual(): bool
public setAccessible(bool $accessible): void
public setRawValue(object $object, mixed $value): void
public setValue(object $object, ?object $object, mixed $value): void
public __toString(): string
}

Propiedades

name

Nombre de la propiedad. Solo lectura, lanza una ReflectionException al intentar escribir.

class

Nombre de la clase donde se definió la propiedad. Solo lectura, lanza una ReflectionException al intentar escribir.

Constantes predefinidas

Modificadores de ReflectionProperty

ReflectionProperty::IS_STATIC int

Indica que la propiedad es static. Anterior a PHP 7.4.0, el valor era 1.

ReflectionProperty::IS_READONLY int

Indica que la propiedad es readonly. Disponible a partir de PHP 8.1.0.

ReflectionProperty::IS_PUBLIC int

Indica que la propiedad es pública. Anterior a PHP 7.4.0, el valor era 256.

ReflectionProperty::IS_PROTECTED int

Indica que la propiedad es protegida. Anterior a PHP 7.4.0, el valor era 512.

ReflectionProperty::IS_PRIVATE int

Indica que la propiedad es privada. Anterior a PHP 7.4.0, el valor era 1024.

ReflectionProperty::IS_ABSTRACT int
Indica que la propiedad es abstracta. Disponible a partir de PHP 8.4.0.
ReflectionProperty::IS_PROTECTED_SET int
Disponible a partir de PHP 8.4.0.
ReflectionProperty::IS_PRIVATE_SET int
Disponible a partir de PHP 8.4.0.
ReflectionProperty::IS_VIRTUAL int
Disponible a partir de PHP 8.4.0.
ReflectionProperty::IS_FINAL int
Indica que la propiedad es final. Disponible a partir de PHP 8.4.0.

Nota:

El valor de estas constantes puede cambiar entre versiones de PHP. Se recomienda siempre utilizar las constantes y no depender de los valores directamente.

Historial de cambios

Versión Descripción
8.4.0 Las constantes de clase ahora están tipadas.
8.4.0 Se añadieron ReflectionProperty::IS_VIRTUAL, ReflectionProperty::IS_PRIVATE_SET, ReflectionProperty::IS_PROTECTED_SET, ReflectionProperty::IS_ABSTRACT, y ReflectionProperty::IS_FINAL.
8.0.0 ReflectionProperty::export() ha sido eliminada.

Tabla de contenidos

add a note

User Contributed Notes 1 note

up
7
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