在PHP中调用带有数组值的方法

时间:2010-05-13 19:48:35

标签: php arrays

我有一个这样的课程

class someclass{
  public function somemethod(){}
}

现在我有一个数组:

$somearray['someclass']  = new someclass();
$somearray['somemethod'] = 'somemethod';

我如何解雇他们,我尝试了以下方法:

$somearray['someclass']->$somearray['somemethod']();

用这个我得到以下错误:

  

致命错误:方法名称必须是......................

中的字符串

任何人都知道如何做到这一点?

5 个答案:

答案 0 :(得分:1)

如果它不想以这种方式工作(我同意它应该),你可以尝试:

call_user_func(array($somearray['someclass'], $somearray['somemethod']));

答案 1 :(得分:0)

尝试$somearray['someclass']->{$somearray['somemethod']}();

答案 2 :(得分:0)

我无法使用提供的代码重现错误(因为@webbiedave指出语法是正确的。)

但是,在使用它之前,您可以将方法名称转换为字符串,以确保方法名称是字符串。这将确保即使它是具有__toString()方法的用户定义对象,它也将转换为其字符串表示形式。

$somearray['someclass']->{(string)$somearray['somemethod']}();

答案 3 :(得分:0)

以下代码经过测试,似乎是您想要的:

<?php


class someclass{
  public function somemethod(){ echo 'test'; }
}


$somearray['someclass']  = new someclass();
$somearray['somemethod'] = 'somemethod';

$somearray['someclass']->{$somearray['somemethod']}();

?>

答案 4 :(得分:0)

这个怎么样:

foreach (get_class_methods(get_class(new someclass()) as $method) {
    $method();    
}