我想从我的一个对象中调用一个静态方法。如果我知道对象的名称,这没有问题,但在这种情况下,我没有 我有一个包含多个对象名称的数组,我想从其中一个数组元素中调用该方法。所以,它看起来像这样:
function call_method($key) {
$tmp = array('key1' => 'objectname1','key2' => 'objectname2','key3' => 'objectname3');
if(array_key_exists($key, $tmp)) {
$tmp::static_method();
}
}
但是,这个解决方案无效。有人知道如何使这个工作吗?
答案 0 :(得分: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 */);
答案 1 :(得分:2)
现在,您正在尝试调用该数组上的静态函数。你应该这样做:
if(array_key_exists($key, $tmp)) {
$tmp[$key]::static_method();
}
以为你在数组中指定了名称“object”,我假设它们是类名。无法使用实例调用静态函数。