PHP 8.4.1 Released!

Classe ReflectionClass

(PHP 5, PHP 7, PHP 8)

Introdução

Classe ReflectionClassreporta informações sobre uma classe.

Resumo da classe

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;
/* Propriedades */
public string $name;
/* Métodos */
public __construct(object|string $objectOrClass)
public static export(mixed $argument, 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
}

Propriedades

name

Nome da classe. Apenas leitura, gera ReflectionException na tentativa de escrita.

Constantes predefinidas

Modificadores ReflectionClass

ReflectionClass::IS_IMPLICIT_ABSTRACT

Indica que a classe é abstrata pois possui alguns métodos abstratos.

ReflectionClass::IS_EXPLICIT_ABSTRACT

Indica que a classe é abstrata por causa da sua definição.

ReflectionClass::IS_FINAL

Indica que a classe é final.

ReflectionClass::IS_READONLY

Indica que a classe é readonly.

ReflectionClass::SKIP_INITIALIZATION_ON_SERIALIZE
Indica que serialize() não deve disparar a inicialização de um objeto lento.
ReflectionClass::SKIP_DESTRUCTOR
Indica que um destrutor de objeto não deve ser chamado ao redefini-lo como lento.

Registro de Alterações

Versão Descrição
8.0.0 ReflectionClass::export() foi removida.

Índice

adicione uma nota

Notas Enviadas por Usuários (em inglês) 4 notes

up
40
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');
?>
up
25
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
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

?>
up
4
featherbits
3 years ago
In order to get class attributes look here (php8)
https://www.php.net/manual/en/language.attributes.reflection.php
To Top