PHP 8.5.0 RC4 available for testing

La clase ReflectionClass

(PHP 5, PHP 7, PHP 8)

Introducción

La clase ReflectionClass proporciona información sobre una clase.

Sinopsis de la Clase

class ReflectionClass implements Reflector {
/* Constantes */
public const int IS_IMPLICIT_ABSTRACT;
public const int IS_FINAL;
public const int IS_READONLY;
public const int SKIP_DESTRUCTOR;
/* Propiedades */
public string $name;
/* Métodos */
public __construct(object|string $objectOrClass)
public static export(mixed $argumento, bool $return = false): string
public getAttributes(?string $name = null, int $flags = 0): array
public getConstant(string $name): mixed
public getConstants(?int $filter = null): array
public getEndLine(): int|false
public getMethods(?int $filter = null): array
public getModifiers(): int
public getName(): string
public getProperties(?int $filter = null): array
public getStaticPropertyValue(string $name, mixed &$def_value = ?): mixed
public getTraits(): array
public hasConstant(string $name): bool
public hasMethod(string $name): bool
public hasProperty(string $name): bool
public inNamespace(): bool
public isAbstract(): bool
public isAnonymous(): bool
public isCloneable(): bool
public isEnum(): bool
public isFinal(): bool
public isInstance(object $object): bool
public isInterface(): bool
public isInternal(): bool
public isIterable(): bool
public isReadOnly(): bool
public isTrait(): bool
public newInstance(mixed ...$args): object
public newInstanceArgs(array $args = []): ?object
public newLazyGhost(callable $initializer, int $options = 0): object
public newLazyProxy(callable $factory, int $options = 0): object
public resetAsLazyGhost(object $object, callable $initializer, int $options = 0): void
public resetAsLazyProxy(object $object, callable $factory, int $options = 0): void
public setStaticPropertyValue(string $name, mixed $value): void
public __toString(): string
}

Propiedades

name

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

ReflectionClass::SKIP_INITIALIZATION_ON_SERIALIZE int
Indica que serialize() no debe desencadenar la inicialización de un objeto en carga perezosa.
ReflectionClass::SKIP_DESTRUCTOR int
Indica que un destructor de objeto no debe ser llamado al reinicializarlo como objeto perezoso.

Constantes predefinidas

Modificadores de ReflectionClass

ReflectionClass::IS_IMPLICIT_ABSTRACT int

Indica si la clase es abstracta porque contiene métodos abstractos.

ReflectionClass::IS_EXPLICIT_ABSTRACT int

Indica si la clase es abstracta debido a su definición.

ReflectionClass::IS_FINAL int

Indica si la clase es final.

ReflectionClass::IS_READONLY int

Indica si la clase es readonly.

Historial de cambios

Versión Descripción
8.4.0 Las constantes de clase ahora están tipadas.
8.0.0 ReflectionClass::export() ha sido eliminada.

Tabla de contenidos

add a note

User Contributed Notes 4 notes

up
41
danbettles at yahoo dot co dot uk
16 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');
?>
up
26
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
?>
up
21
Anonymous
12 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

?>
To Top