Класс ReflectionClass

(PHP 5)

Введение

Класс ReflectionClass сообщает информацию о классе.

Обзор классов

ReflectionClass implements Reflector {
/* Константы */
const integer IS_IMPLICIT_ABSTRACT = 16 ;
const integer IS_EXPLICIT_ABSTRACT = 32 ;
const integer IS_FINAL = 64 ;
/* Свойства */
public $name ;
/* Методы */
__construct ( mixed $argument )
public static string export ( mixed $argument [, bool $return = false ] )
public mixed getConstant ( string $name )
public array getConstants ( void )
public ReflectionMethod getConstructor ( void )
public array getDefaultProperties ( void )
public string getDocComment ( void )
public int getEndLine ( void )
public ReflectionExtension getExtension ( void )
public string getExtensionName ( void )
public string getFileName ( void )
public array getInterfaceNames ( void )
public array getInterfaces ( void )
public ReflectionMethod getMethod ( string $name )
public array getMethods ([ string $filter ] )
public int getModifiers ( void )
public string getName ( void )
public string getNamespaceName ( void )
public object getParentClass ( void )
public array getProperties ([ int $filter ] )
public ReflectionProperty getProperty ( string $name )
public string getShortName ( void )
public int getStartLine ( void )
public array getStaticProperties ( void )
public mixed getStaticPropertyValue ( string $name )
public array getTraitAliases ( void )
public array getTraitNames ( void )
public array getTraits ( void )
public bool hasConstant ( string $name )
public bool hasMethod ( string $name )
public bool hasProperty ( string $name )
public bool implementsInterface ( string $interface )
public bool inNamespace ( void )
public bool isAbstract ( void )
public bool isCloneable ( void )
public bool isFinal ( void )
public bool isInstance ( object $object )
public bool isInstantiable ( void )
public bool isInterface ( void )
public bool isInternal ( void )
public bool isIterateable ( void )
public bool isSubclassOf ( string $class )
public bool isTrait ( void )
public bool isUserDefined ( void )
public object newInstance ( mixed $args [, mixed $... ] )
public object newInstanceArgs ([ array $args ] )
public object newInstanceWithoutConstructor ( void )
public void setStaticPropertyValue ( string $name , string $value )
public string __toString ( void )
}

Свойства

name

Имя класса. Доступно только для чтения и выбрасывает исключение ReflectionException при попытке записи.

Предопределенные константы

Модификаторы ReflectionClass

ReflectionClass::IS_IMPLICIT_ABSTRACT

Указывает, что класс является абстрактным, потому что он содержит абстрактные методы.

ReflectionClass::IS_EXPLICIT_ABSTRACT

Указывает, что класс является абстрактным, потому что так указано при его описании.

ReflectionClass::IS_FINAL

Указывает, что класс является окончательным (final) class.

Содержание

Коментарии

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');
?>
2009-03-29 05:48:19
http://php5.kiev.ua/manual/ru/class.reflectionclass.html
Автор:
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
?>
2011-11-11 11:58:16
http://php5.kiev.ua/manual/ru/class.reflectionclass.html
Автор:
Reflecting an alias will give you a reflection of the resolved class.

<?php

class {
   
}

class_alias('X','Y');
class_alias('Y','Z');
$z = new ReflectionClass('Z');
echo 
$z->getName(); // X

?>
2013-05-17 09:45:25
http://php5.kiev.ua/manual/ru/class.reflectionclass.html
Автор:
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"
 
}
}
2015-09-21 17:20:56
http://php5.kiev.ua/manual/ru/class.reflectionclass.html
Автор:
In order to get class attributes look here (php8)
https://www.php.net/manual/en/language.attributes.reflection.php
2021-01-27 18:10:23
http://php5.kiev.ua/manual/ru/class.reflectionclass.html

    Поддержать сайт на родительском проекте КГБ