PHP 8.5.0 Beta 2 available for testing

The ReflectionClass class

(PHP 5, PHP 7, PHP 8)

Introduction

The ReflectionClass class reports information about a class.

Class synopsis

class ReflectionClass implements Reflector {
/* Constants */
public const int IS_IMPLICIT_ABSTRACT ;
public const int IS_EXPLICIT_ABSTRACT ;
public const int IS_FINAL ;
public const int IS_READONLY ;
public const int SKIP_DESTRUCTOR ;
/* Properties */
public string $name ;
/* Methods */
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 getFileName (): string |false
public getInterfaces (): array
public getLazyInitializer (object $object): ? callable
public getMethods (? int $filter = null ): array
public getModifiers (): int
public getName (): string
public getProperties (? int $filter = null ): array
public getReflectionConstants (? int $filter = null ): array
public getShortName (): string
public getStartLine (): int |false
public getStaticPropertyValue (string $name, mixed &$def_value = ?): mixed
public getTraitNames (): array
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 isInstantiable (): bool
public isInterface (): bool
public isInternal (): bool
public isIterable (): bool
public isReadOnly (): bool
public isTrait (): bool
public isUserDefined (): 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
}

Properties

name

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

Predefined Constants

ReflectionClass Modifiers

ReflectionClass::IS_IMPLICIT_ABSTRACT int

Indicates the class is abstract because it has some abstract methods.

ReflectionClass::IS_EXPLICIT_ABSTRACT int

Indicates the class is abstract because of its definition.

ReflectionClass::IS_FINAL int

Indicates the class is final.

ReflectionClass::IS_READONLY int

Indicates the class is readonly.

ReflectionClass::SKIP_INITIALIZATION_ON_SERIALIZE int
Indicates that serialize() should not trigger initialization of a lazy object.
ReflectionClass::SKIP_DESTRUCTOR int
Indicates an object destructor should not be called when resetting it as lazy.

Changelog

Version Description
8.4.0 The class constants are now typed.
8.0.0 ReflectionClass::export() was removed.

Table of Contents

Found A Problem?

Learn How To Improve This PageSubmit a Pull RequestReport a Bug
+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

?>
up
5
featherbits
4 years ago
In order to get class attributes look here (php8)
https://www.php.net/manual/en/language.attributes.reflection.php
+add a note

AltStyle によって変換されたページ (->オリジナル) /