The ReflectionClass class

(PHP 5, PHP 7)

Introduction

The ReflectionClass class reports information about a class.

Class synopsis

ReflectionClass implements Reflector {
/* Constants */
const int IS_IMPLICIT_ABSTRACT = 16 ;
const int IS_EXPLICIT_ABSTRACT = 32 ;
const int IS_FINAL = 64 ;
/* Properties */
public $name ;
/* Methods */
public __construct (object|string $objectOrClass )
public static export (mixed $argument , bool $return = false ): string
public getConstant (string $name ): mixed
public getConstants (int|null $filter = null ): array
public getDefaultProperties ( ): array
public getDocComment ( ): string|false
public getEndLine ( ): int|false
public getExtensionName ( ): string|false
public getFileName ( ): string|false
public getInterfaceNames ( ): array
public getInterfaces ( ): array
public getMethod (string $name ): ReflectionMethod
public getMethods (int|null $filter = null ): array
public getModifiers ( ): int
public getName ( ): string
public getNamespaceName ( ): string
public getParentClass ( ): ReflectionClass|false
public getProperties (int|null $filter = null ): array
public getProperty (string $name ): ReflectionProperty
public getReflectionConstant (string $name ): ReflectionClassConstant|false
public getReflectionConstants (int|null $filter = null ): array
public getShortName ( ): string
public getStartLine ( ): int|false
public getStaticProperties ( ): array|null
public getStaticPropertyValue (string $name , mixed &$def_value = ? ): mixed
public getTraitAliases ( ): array
public getTraitNames ( ): array
public getTraits ( ): array
public hasConstant (string $name ): bool
public hasMethod (string $name ): bool
public hasProperty (string $name ): bool
public implementsInterface (ReflectionClass|string $interface ): bool
public inNamespace ( ): bool
public isAbstract ( ): bool
public isAnonymous ( ): bool
public isCloneable ( ): bool
public isFinal ( ): bool
public isInstance (object $object ): bool
public isInstantiable ( ): bool
public isInterface ( ): bool
public isInternal ( ): bool
public isIterable ( ): bool
public isSubclassOf (ReflectionClass|string $class ): bool
public isTrait ( ): bool
public isUserDefined ( ): bool
public newInstance (mixed ...$args ): object
public newInstanceArgs (array $args = [] ): object
public newInstanceWithoutConstructor ( ): object
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

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

ReflectionClass::IS_EXPLICIT_ABSTRACT

Indicates class that is abstract because of its definition.

ReflectionClass::IS_FINAL

Indicates final class.

Table of Contents

add a note add a note

User Contributed Notes 4 notes

up
32
danbettles at yahoo dot co dot uk
11 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
18
Anonymous
7 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
20
Anonymous
9 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
-25
YoungOfCthulhu
5 years ago
It is also possible to do reflection from within the class and get the methods for instance.

<?php

class test
{
    private
$test = "";

    public function
setTest($test)
    {
       
$this->test = $test;
        return
$this;
    }

    public function
getTest()
    {
        return
$this->test;
    }
   
    public function
run(){
       
$class = new ReflectionClass('test');
       
$methods = $class->getMethods();
       
var_dump($methods);
    }
}

Called from another php file you get the proper result:
array(
3) {
  [
0]=>
  &
object(ReflectionMethod)#3 (2) {
   
["name"]=>
   
string(8) "setTest"
   
["class"]=>
   
string(4) "test"
 
}
  [
1]=>
  &
object(ReflectionMethod)#4 (2) {
   
["name"]=>
   
string(8) "getTest"
   
["class"]=>
   
string(4) "test"
 
}
  [
2]=>
  &
object(ReflectionMethod)#5 (2) {
   
["name"]=>
   
string(3) "run"
   
["class"]=>
   
string(4) "test"
 
}
}
To Top