ReflectionMethod
在线手册:中文 英文
PHP手册

ReflectionMethod::invoke

(PHP 5)

ReflectionMethod::invokeInvoke

说明

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

Invokes a reflected method.

参数

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.

返回值

Returns the method result.

错误/异常

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.

范例

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');
?>

以上例程会输出:

Hello Mike

注释

Note:

如果函数有参数需为引用, 那么它们必须以引用方式传入.

参见


ReflectionMethod
在线手册:中文 英文
PHP手册
PHP手册 - N: Invoke

用户评论:

templargrey at wp dot pl (21-Jul-2011 09:12)

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));
?>

rojaro at gmail dot com (10-Feb-2011 09:56)

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 ).