0

我想从我的一个对象中调用一个静态方法。如果我知道对象的名称,这没问题,但在这种情况下,我不知道。
我有一个包含多个对象名称的数组,我想从其中一个数组元素中调用该方法。所以,它看起来像这样:

function call_method($key)  {
    $tmp = array('key1' => 'objectname1','key2' => 'objectname2','key3' => 'objectname3');
    if(array_key_exists($key, $tmp))    {
        $tmp::static_method();
    }
}

但是,这个解决方案不起作用。有人知道如何让这个工作吗?

4

2 回答 2

3

$tmp是一个数组,因此它没有与之关联的静态方法。您需要查找该值并使用它:

// this will work for newer versions of PHP
$klass = $tmp[$key];
$klass::static_method();

// in some older versions, you may need to use call_user_func:
call_user_func(array($klass, 'static_method') /*, your args here */);
于 2012-10-09T14:57:07.637 回答
2

现在,您正在尝试调用该数组上的静态函数。你应该做 :

 if(array_key_exists($key, $tmp))    {
    $tmp[$key]::static_method();
}

以为您在数组中指定了名称“对象”,我假设它们是类名。不能使用实例调用静态函数。

于 2012-10-09T14:57:46.797 回答