我正在编写一个IRC机器人,在其中我有一个包含命令的数组,以及每个命令的操作。
例如,存储的操作可能是$array("action" => $irc->say_something())
我是否可以使用$array['action']
来调用它,或者我是否必须以其他方式执行此操作?
答案 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是一个数组元素
也会有效