Php 来自未知对象的静态方法调用

Php 来自未知对象的静态方法调用,php,Php,我想从我的一个对象调用一个静态方法。如果我知道对象的名称,这没有问题,但在这种情况下,我不知道。 我有一个具有多个对象名的数组,我想从其中一个数组元素调用该方法。所以,它看起来像这样: function call_method($key) { $tmp = array('key1' => 'objectname1','key2' => 'objectname2','key3' => 'objectname3'); if(array_key_exists($ke

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

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

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

$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 */);

$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 */);

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

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

虽然您在数组中指定了名称“object”,但我假设它们是类名。静态函数不能与实例一起调用。

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

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

虽然您在数组中指定了名称“object”,但我假设它们是类名。静态函数不能与实例一起调用。

“不工作”是一个非常广泛的问题。你有错误吗?是致命的吗?这是怎么一回事?你没有得到你所期望的吗?如果没有,你期待什么?“不工作”是一个非常广泛的问题。你有错误吗?是致命的吗?这是怎么一回事?你没有得到你所期望的吗?如果没有,你期待什么?谢谢,这帮了大忙。我不得不使用call\u user\u func(…)。现在它正在工作。:-)谢谢,这帮了大忙。我不得不使用call\u user\u func(…)。现在它正在工作。:-)