ConFoo Montreal 2017 Calling for Papers

La classe ReflectionMethod

(PHP 5, PHP 7)

Introduction

La classe ReflectionMethod rapporte des informations sur une méthode.

Synopsis de la classe

ReflectionMethod extends ReflectionFunctionAbstract implements Reflector {
/* Constantes */
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 ;
/* Propriétés */
public $name ;
public $class ;
/* Méthodes */
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 )
/* Méthodes héritées */
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 )
}

Propriétés

name

Nom de la méthode

class

Nom de la classe

Constantes pré-définies

Modificateurs de ReflectionMethod

ReflectionMethod::IS_STATIC

Indique que la méthode est statique

ReflectionMethod::IS_PUBLIC

Indique que la méthode est publique

ReflectionMethod::IS_PROTECTED

Indique que la méthode est protégée

ReflectionMethod::IS_PRIVATE

Indique que la méthode est privée

ReflectionMethod::IS_ABSTRACT

Indique que la méthode est abstraite

ReflectionMethod::IS_FINAL

Indique que la méthode est finale

Sommaire

add a note add a note

User Contributed Notes 2 notes

up
4
webseiten dot designer at googlemail dot com
5 years ago
Note that the public member $class contains the name of the class in which the method has been defined:

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

$method = new ReflectionMethod('B', '__construct');
echo
$method->class; // prints 'A'
?>
up
-6
no dot prob at gmx dot net
10 years ago
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.
To Top