ReflectionMethod::invoke

(PHP 5)

ReflectionMethod::invokeInvoke

Description

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

Invokes a reflected method.

Parameters

object

The object to invoke the method on. For static methods, pass null to this parameter.

parameter

Zero or more parameters to be passed to the method. It accepts a variable number of parameters which are passed to the method.

Return Values

Returns the method result.

Errors/Exceptions

A ReflectionException if the object parameter does not contain an instance of the class that this method was declared in.

A ReflectionException if the method invocation failed.

Examples

Example #1 ReflectionMethod::invoke() example

<?php
class HelloWorld {

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

}

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

The above example will output:

Hello Mike

Notes

Note:

If the function has arguments that need to be references, then they must be references in the passed argument list.

See Also

Коментарии

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

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