我可以调用名称存储在变量中的函数吗?

时间:2011-01-24 22:16:53

标签: php function variables

我正在编写一个IRC机器人,在其中我有一个包含命令的数组,以及每个命令的操作。

例如,存储的操作可能是$array("action" => $irc->say_something())

我是否可以使用$array['action']来调用它,或者我是否必须以其他方式执行此操作?

4 个答案:

答案 0 :(得分:2)

使用call_user_func('func', list, of, args)call_user_func_array('func', array(containing, arguments))

由于你想调用一个类方法,你必须传递'func'而不是一个字符串,而是作为一个数组:array($instance, 'func') - 在你的情况下:array($irc, 'say_something')

Fyi,$array("action" => $irc->say_something())毫无意义。但你可能想写array("action" => $irc->say_something())。但是,这会为方法调用的结果分配“操作” - 而不是您想要的。请参阅最后一段,了解将'action'值用作方法指针的方式。

答案 1 :(得分:1)

不确定

$invocation = array("action" => array(
                                      'func' => array($irc,'say_something'),
                                      'args' => array()));

call_user_func_array($invocation['action']['func'], $invocation['action']['args']);

答案 2 :(得分:0)

call_user_func http://us.php.net/call_user_func

<?php
function barber($type)
{
    echo "You wanted a $type haircut, no problem\n";
}
call_user_func('barber', "mushroom");
call_user_func('barber', "shave");
?>

答案 3 :(得分:0)

我知道你可以这样做:

$target = "  blah  ";
$function = "trim";
$trimmed = $function($target);

我猜如果$ function是一个数组元素

也会有效