ReflectionMethod::invoke

(PHP 5)

ReflectionMethod::invokeВызов

Описание

public mixed ReflectionMethod::invoke ( object $object [, mixed $parameter [, mixed $... ]] )

Вызывает отображенный метод.

Список параметров

object

Объект, метод которого требуется вызвать. Для статических методов передается null.

parameter

Ноль или более аргументов, передаваемых методу. Допускается передавать переменное число аргументов.

Возвращаемые значения

Возвращает результат выполнения метода.

Ошибки

Вызывает исключение ReflectionException, если в объекте object нет определения метода.

Вызывает исключение ReflectionException, если вызвать метод на исполнение не удалось.

Примеры

Пример #1 Пример использования ReflectionMethod::invoke()

<?php
class HelloWorld {

    public function 
sayHelloTo($name) {
        return 
'Hello ' $name;
    }

}

$reflectionMethod = new ReflectionMethod('HelloWorld''sayHelloTo');
echo 
$reflectionMethod->invoke(new HelloWorld(), 'Mike');
?>

Результат выполнения данного примера:

Hello Mike

Примечания

Замечание:

Если функция имеет аргументы, которые должны быть ссылками, то они должны быть ссылками и в переданном спике аргументов.

Смотрите также

Коментарии

Note: If you want to invoke protected or private methods, you'll first have to make them accessible using the setAccessible() method (see http://php.net/reflectionmethod.setaccessible ).
2011-02-10 03:56:58
http://php5.kiev.ua/manual/ru/reflectionmethod.invoke.html
Seems that Reflection doesn`t resolve late static bindings - var_dump will show "string 'a' (length=1)".

<?php
class ParentClass { protected static $a 'a'; static public function init() { return static::$a; } }
class 
ChildClass extends ParentClass { protected static $a 'b'; }
   
$r = new ReflectionClass('ChildClass');
var_dump($r->getMethod('init')->invoke(null));
?>
2011-07-21 04:12:21
http://php5.kiev.ua/manual/ru/reflectionmethod.invoke.html
This method can be used to call a overwritten public method of a parent class on an child instance
The following code will output "A":

<?php

class A
{
    public function 
foo()
    {
        return 
__CLASS__;
    }
}

class 
extends A
{
    public function 
foo()
    {
        return 
__CLASS__;
    }
}

$b = new B();

$reflection = new ReflectionObject($b);

$parentReflection $reflection->getParentClass();

$parentFooReflection $parentReflection->getMethod('foo');

$data $parentFooReflection->invoke($b);

echo 
$data;

?>
2012-06-06 16:19:35
http://php5.kiev.ua/manual/ru/reflectionmethod.invoke.html

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