Класс ReflectionMethod

(PHP 5, PHP 7)

Введение

Класс ReflectionMethod сообщает информацию о методах.

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

ReflectionMethod extends ReflectionFunctionAbstract implements Reflector {
/* Константы */
const integer IS_STATIC = 1 ;
const integer IS_PUBLIC = 256 ;
const integer IS_PROTECTED = 512 ;
const integer IS_PRIVATE = 1024 ;
const integer IS_ABSTRACT = 2 ;
const integer IS_FINAL = 4 ;
/* Свойства */
public $name ;
public $class ;
/* Методы */
public __construct ( mixed $class , string $name )
public static string export ( string $class , string $name [, bool $return = false ] )
public Closure getClosure ( object $object )
public ReflectionClass getDeclaringClass ( void )
public int getModifiers ( void )
public ReflectionMethod getPrototype ( void )
public mixed invoke ( object $object [, mixed $parameter [, mixed $... ]] )
public mixed invokeArgs ( object $object , array $args )
public bool isAbstract ( void )
public bool isConstructor ( void )
public bool isDestructor ( void )
public bool isFinal ( void )
public bool isPrivate ( void )
public bool isProtected ( void )
public bool isPublic ( void )
public bool isStatic ( void )
public void setAccessible ( bool $accessible )
public string __toString ( void )
/* Наследуемые методы */
final private void ReflectionFunctionAbstract::__clone ( void )
public ReflectionClass ReflectionFunctionAbstract::getClosureScopeClass ( void )
public ReflectionExtension ReflectionFunctionAbstract::getExtension ( void )
public string ReflectionFunctionAbstract::getName ( void )
public ReflectionType ReflectionFunctionAbstract::getReturnType ( void )
abstract public void ReflectionFunctionAbstract::__toString ( void )
}

Свойства

name

Имя метода

class

Имя класса

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

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

ReflectionMethod::IS_STATIC

Указывает на то, что это статический метод.

ReflectionMethod::IS_PUBLIC

Указывает на то, что это публичный метод.

ReflectionMethod::IS_PROTECTED

Указывает на то, что это защищённый метод.

ReflectionMethod::IS_PRIVATE

Указывает на то, что это приватный метод.

ReflectionMethod::IS_ABSTRACT

Указывает на то, что это абстрактный метод.

ReflectionMethod::IS_FINAL

Указывает на то, что это финализированный метод.

Содержание

Коментарии

I have written a function which returns the value of a given DocComment tag.

Full example:

<?php

header
('Content-Type: text/plain');

class 
Example
{
   
/**
     * This is my DocComment!
     * 
     * @DocTag: prints Hello World!
     */
   
public function myMethod()
    {
        echo 
'Hello World!';
    }
}

function 
getDocComment($str$tag '')
{
    if (empty(
$tag))
    {
        return 
$str;
    }

   
$matches = array();
   
preg_match("/".$tag.":(.*)(\\r\\n|\\r|\\n)/U"$str$matches);

    if (isset(
$matches[1]))
    {
        return 
trim($matches[1]);
    }

    return 
'';
}

$method = new ReflectionMethod('Example''myMethod');

// will return Hello World!
echo getDocComment($method->getDocComment(), '@DocTag');

?>

Maybe you can add this functionality to the getDocComment methods of the reflection classes.
2006-06-02 04:09:12
http://php5.kiev.ua/manual/ru/class.reflectionmethod.html
Note that the public member $class contains the name of the class in which the method has been defined:

<?php
class {public function __construct() {}}
class 
extends {}

$method = new ReflectionMethod('B''__construct');
echo 
$method->class// prints 'A'
?>
2011-04-02 14:53:12
http://php5.kiev.ua/manual/ru/class.reflectionmethod.html
Автор:
We can make a "Automatic dependenci injector" in classes when her constructors depends other classes (with type hint).

<?php

class Dependence1 {
    function 
foo() {
        echo 
"foo";
    }
}

class 
Dependence2 {
    function 
foo2() {
        echo 
"foo2";
    }
}

final class 
myClass
{
    private 
$dep1;
    private 
$dep2;

    public function 
__construct(
       
Dependence1 $dependence1
       
Dependence2 $dependence2
   
)
    {
       
$this->dep1 $dependence1;
       
$this->dep2 $dependence2;       
    }
   
}

// Automatic dependence injection (CLASSES)

$constructor = new ReflectionMethod(myClass::class, '__construct');
$parameters $constructor->getParameters();

$dependences = [];
foreach (
$parameters as $parameter) {
   
$dependenceClass = (string) $parameter->getType();
   
$dependences[] = new $dependenceClass();
}

$instance = new myClass(...$dependences);
var_dump($instance);

?>

Results in: 

object(myClass)#6 (2) {
  ["dep1":"myClass":private]=>
  object(Dependence1)#4 (0) {
  }
  ["dep2":"myClass":private]=>
  object(Dependence2)#5 (0) {
  }
}
2020-11-03 00:15:21
http://php5.kiev.ua/manual/ru/class.reflectionmethod.html

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