Invoke似乎没有使用带有空数组的ReflectionMethod?

时间:2014-05-13 09:00:56

标签: php

我有以下代码:

$loClass    = new ReflectionClass('SampleClass');
$loMethod   = $loClass->getMethod('doSomething');

$loMethod->invoke(array());

让我们说这个课程看起来像这样:

<?php

/**
 * Sample Class
 */
class SampleClass
{
    public function __construct()
    {

    }

    /**
     * Do somehting
     */
    public function doSomething($paParams)
    {
        // do something
    }
}

我收到以下错误:

object(ReflectionException)#181 (7) { ["message":protected]=> string(29) "Non-object passed to Invoke()", ..

我想要做的是从字符串调用类方法,参数作为数组(可以是空数组) 任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

除非方法是静态的,否则你需要传递对象实例来调用这个方法:

$loClass    = new ReflectionClass('SampleClass');
$loMethod   = $loClass->getMethod('doSomething');
$sample     = new SampleClass();

$loMethod->invoke($sample, array());

查看ReflectionMethod::invoke()

的手册页