在自动化某些代码的过程中,我希望根据字符串的内容调用一个函数。
例如,我有一个变量$somevar
,它被设置为字符串“This”。现在我想运行一个函数doThis();
所以,我希望我能写do.$somevar($var,$var2)
。我希望它运行doThis($var1,$var2)
。
这可能吗?
答案 0 :(得分:4)
您可以使用call_user_func来完成此任务。
call_user_func("do" . $somevar, $var1, $var2);
您还可以使用is_callable检查错误情况。
if (is_callable("do" . $somevar)) {
call_user_func("do" . $somevar, $var1, $var2);
} else {
echo "Function do" . $somevar . " doesn't exist.";
}
答案 1 :(得分:3)
我认为你不能那样做,但你可以这样做:
call_user_func('do'. $somevar, $var, $var2);
或
$func = 'do' . $somevar;
$func($var, $var2);
答案 2 :(得分:1)
这在php中完全合法
$myVar = 'This';
$method = 'do'.$myVar; // = doThis
$class = new MyClass();
$class->$method($var1, $var2, ...); // executes MyClass->doThis();
答案 3 :(得分:1)
$fname="do$somevar";
$fname();
但在使用之前你应该三思而行。
答案 4 :(得分:0)
在php中你使用 - >代替 。 这将有效:
$foo = new someObject;
$somevar = 'function_name';
$foo->$somevar('x');
答案 5 :(得分:0)
检查call_user_func或call_user_func_array
class myclass {
static function say_hello()
{
echo "Hello!\n";
}
}
$classname = "myclass";
call_user_func(array($classname, 'say_hello'));
call_user_func($classname .'::say_hello'); // As of 5.2.3